mirror of
https://github.com/electron/electron.git
synced 2026-04-10 03:01:51 -04:00
fix: crash caused by app.getLocaleCountryCode() (#32256)
CFLocaleGetValue() returned null and crashed the process when app.getLocaleCountryCode() was run on a CircleCI metal resource class macOS instance with Xcode 12.5.1. This change fixes that logic and adds further checks to make the code future-proof. Here too people are complaining that the returned country code migth be null: https://stackoverflow.com/questions/15202454/nslocalecountrycode-returns-nil Signed-off-by: Darshan Sen <darshan.sen@postman.com>
This commit is contained in:
@@ -1054,11 +1054,14 @@ std::string App::GetLocaleCountryCode() {
|
||||
CFLocaleRef locale = CFLocaleCopyCurrent();
|
||||
CFStringRef value = CFStringRef(
|
||||
static_cast<CFTypeRef>(CFLocaleGetValue(locale, kCFLocaleCountryCode)));
|
||||
const CFIndex kCStringSize = 128;
|
||||
char temporaryCString[kCStringSize] = {0};
|
||||
CFStringGetCString(value, temporaryCString, kCStringSize,
|
||||
kCFStringEncodingUTF8);
|
||||
region = temporaryCString;
|
||||
if (value != nil) {
|
||||
char temporaryCString[3];
|
||||
const CFIndex kCStringSize = sizeof(temporaryCString);
|
||||
if (CFStringGetCString(value, temporaryCString, kCStringSize,
|
||||
kCFStringEncodingUTF8)) {
|
||||
region = temporaryCString;
|
||||
}
|
||||
}
|
||||
#else
|
||||
const char* locale_ptr = setlocale(LC_TIME, nullptr);
|
||||
if (!locale_ptr)
|
||||
|
||||
Reference in New Issue
Block a user