diff options
author | Sven Gothel <[email protected]> | 2014-09-08 08:27:03 +0200 |
---|---|---|
committer | Sven Gothel <[email protected]> | 2014-09-08 08:27:03 +0200 |
commit | c0c722b9f479412f27973ba0c4cd4a166dcb00be (patch) | |
tree | 15996622d91b52d9aed3b2ea3372644399ebcfb6 /src/newt | |
parent | ef7ecf76e28a89b1cdef6c3c7b4ccca123921ae1 (diff) |
Bug 1065: Handle NULL result of TISGetInputSourceProperty(keyboard, kTISPropertyUnicodeKeyLayoutData), avoiding crashv2.2.1
Diffstat (limited to 'src/newt')
-rw-r--r-- | src/newt/native/NewtMacWindow.m | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/newt/native/NewtMacWindow.m b/src/newt/native/NewtMacWindow.m index 5a1963155..caf9e54e0 100644 --- a/src/newt/native/NewtMacWindow.m +++ b/src/newt/native/NewtMacWindow.m @@ -124,6 +124,9 @@ static CFStringRef CKCH_CreateStringForKey(CGKeyCode keyCode, const UCKeyboardLa static CFMutableDictionaryRef CKCH_CreateCodeToCharDict(TISInputSourceRef keyboard) { CFDataRef layoutData = (CFDataRef) TISGetInputSourceProperty(keyboard, kTISPropertyUnicodeKeyLayoutData); + if( NULL == layoutData ) { + return NULL; + } const UCKeyboardLayout *keyboardLayout = (const UCKeyboardLayout *)CFDataGetBytePtr(layoutData); CFMutableDictionaryRef codeToCharDict = CFDictionaryCreateMutable(kCFAllocatorDefault, 128, NULL, NULL); @@ -149,8 +152,10 @@ static CFMutableDictionaryRef CKCH_USCodeToNNChar = NULL; static void CKCH_CreateDictionaries() { TISInputSourceRef currentKeyboard = TISCopyCurrentKeyboardInputSource(); - CKCH_USCodeToNNChar = CKCH_CreateCodeToCharDict(currentKeyboard); - CFRelease(currentKeyboard); + if( NULL != currentKeyboard ) { + CKCH_USCodeToNNChar = CKCH_CreateCodeToCharDict(currentKeyboard); + CFRelease(currentKeyboard); + } } static UniChar CKCH_CharForKeyCode(jshort keyCode) { |