mirror of
https://github.com/gbdev/rgbds.git
synced 2026-09-03 20:38:39 +00:00
Safeguard against localtime or gmtime failure
This commit is contained in:
+24
-23
@@ -748,25 +748,26 @@ void sym_Init(time_t now) {
|
|||||||
}
|
}
|
||||||
// LCOV_EXCL_STOP
|
// LCOV_EXCL_STOP
|
||||||
|
|
||||||
tm const *time_local = localtime(&now);
|
if (tm const *time_local = localtime(&now); time_local != nullptr) {
|
||||||
|
strftime(savedTIME, sizeof(savedTIME), "\"%H:%M:%S\"", time_local);
|
||||||
strftime(savedTIME, sizeof(savedTIME), "\"%H:%M:%S\"", time_local);
|
strftime(savedDATE, sizeof(savedDATE), "\"%d %B %Y\"", time_local);
|
||||||
strftime(savedDATE, sizeof(savedDATE), "\"%d %B %Y\"", time_local);
|
strftime(
|
||||||
strftime(
|
savedTIMESTAMP_ISO8601_LOCAL,
|
||||||
savedTIMESTAMP_ISO8601_LOCAL,
|
sizeof(savedTIMESTAMP_ISO8601_LOCAL),
|
||||||
sizeof(savedTIMESTAMP_ISO8601_LOCAL),
|
"\"%Y-%m-%dT%H:%M:%S%z\"",
|
||||||
"\"%Y-%m-%dT%H:%M:%S%z\"",
|
time_local
|
||||||
time_local
|
);
|
||||||
);
|
}
|
||||||
|
|
||||||
tm const *time_utc = gmtime(&now);
|
tm const *time_utc = gmtime(&now);
|
||||||
|
if (time_utc != nullptr) {
|
||||||
strftime(
|
strftime(
|
||||||
savedTIMESTAMP_ISO8601_UTC,
|
savedTIMESTAMP_ISO8601_UTC,
|
||||||
sizeof(savedTIMESTAMP_ISO8601_UTC),
|
sizeof(savedTIMESTAMP_ISO8601_UTC),
|
||||||
"\"%Y-%m-%dT%H:%M:%SZ\"",
|
"\"%Y-%m-%dT%H:%M:%SZ\"",
|
||||||
time_utc
|
time_utc
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Symbol *timeSymbol = &createSymbol(intern("__TIME__"));
|
Symbol *timeSymbol = &createSymbol(intern("__TIME__"));
|
||||||
timeSymbol->type = SYM_EQUS;
|
timeSymbol->type = SYM_EQUS;
|
||||||
@@ -793,10 +794,10 @@ void sym_Init(time_t now) {
|
|||||||
)
|
)
|
||||||
->isBuiltin = true;
|
->isBuiltin = true;
|
||||||
|
|
||||||
sym_AddEqu(intern("__UTC_YEAR__"), time_utc->tm_year + 1900)->isBuiltin = true;
|
sym_AddEqu(intern("__UTC_YEAR__"), time_utc ? time_utc->tm_year + 1900 : 0)->isBuiltin = true;
|
||||||
sym_AddEqu(intern("__UTC_MONTH__"), time_utc->tm_mon + 1)->isBuiltin = true;
|
sym_AddEqu(intern("__UTC_MONTH__"), time_utc ? time_utc->tm_mon + 1 : 0)->isBuiltin = true;
|
||||||
sym_AddEqu(intern("__UTC_DAY__"), time_utc->tm_mday)->isBuiltin = true;
|
sym_AddEqu(intern("__UTC_DAY__"), time_utc ? time_utc->tm_mday : 0)->isBuiltin = true;
|
||||||
sym_AddEqu(intern("__UTC_HOUR__"), time_utc->tm_hour)->isBuiltin = true;
|
sym_AddEqu(intern("__UTC_HOUR__"), time_utc ? time_utc->tm_hour : 0)->isBuiltin = true;
|
||||||
sym_AddEqu(intern("__UTC_MINUTE__"), time_utc->tm_min)->isBuiltin = true;
|
sym_AddEqu(intern("__UTC_MINUTE__"), time_utc ? time_utc->tm_min : 0)->isBuiltin = true;
|
||||||
sym_AddEqu(intern("__UTC_SECOND__"), time_utc->tm_sec)->isBuiltin = true;
|
sym_AddEqu(intern("__UTC_SECOND__"), time_utc ? time_utc->tm_sec : 0)->isBuiltin = true;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user