fix(macos): null-check the input source languages before counting them
TISGetInputSourceProperty returns NULL for an input source that has no kTISPropertyInputSourceLanguages value, but both loops evaluate CFArrayGetCount(layoutLanguages) before the "&& layoutLanguages" guard. The guard is therefore dead and CFArrayGetCount dereferences NULL. Test the pointer first. Signed-off-by: rNoz <rnoz.commits@gmail.com>
This commit is contained in:
parent
35d877e128
commit
3006b95a02
1 changed files with 2 additions and 2 deletions
|
|
@ -77,7 +77,7 @@ std::vector<std::string> AppUtilUnix::getKeyboardLayoutList()
|
|||
layoutLanguages = (CFArrayRef)TISGetInputSourceProperty(keyboardLayout, kTISPropertyInputSourceLanguages);
|
||||
}
|
||||
char temporaryCString[128] = {0};
|
||||
for (CFIndex index = 0; index < CFArrayGetCount(layoutLanguages) && layoutLanguages; index++) {
|
||||
for (CFIndex index = 0; layoutLanguages && index < CFArrayGetCount(layoutLanguages); index++) {
|
||||
auto languageCode = (CFStringRef)CFArrayGetValueAtIndex(layoutLanguages, index);
|
||||
if (!languageCode || !CFStringGetCString(languageCode, temporaryCString, 128, kCFStringEncodingUTF8)) {
|
||||
continue;
|
||||
|
|
@ -163,7 +163,7 @@ std::string AppUtilUnix::getCurrentLanguageCode()
|
|||
layoutLanguages = (CFArrayRef)TISGetInputSourceProperty(source.get(), kTISPropertyInputSourceLanguages);
|
||||
}
|
||||
char temporaryCString[128] = {0};
|
||||
for (CFIndex index = 0; index < CFArrayGetCount(layoutLanguages) && layoutLanguages; index++) {
|
||||
for (CFIndex index = 0; layoutLanguages && index < CFArrayGetCount(layoutLanguages); index++) {
|
||||
auto languageCode = (CFStringRef)CFArrayGetValueAtIndex(layoutLanguages, index);
|
||||
if (!languageCode || !CFStringGetCString(languageCode, temporaryCString, 128, kCFStringEncodingUTF8)) {
|
||||
continue;
|
||||
|
|
|
|||
Loading…
Reference in a new issue