]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/window.cpp
no changes, just corrected the comment for wxConvLocal
[wxWidgets.git] / src / mac / carbon / window.cpp
index 47a280bc4d4d83e3b9343e128ada44dd5a42d4f0..3cbaafa3c46b8cf974024c76268663fe50f0964c 100644 (file)
@@ -498,25 +498,26 @@ pascal OSStatus wxMacUnicodeTextEventHandler( EventHandlerCallRef handler , Even
     wchar_t* uniChars = NULL ;
     UInt32 when = EventTimeToTicks( GetEventTime( event ) ) ;
 
-    UniChar* charBuf;
+    UniChar* charBuf = NULL;
     UInt32 dataSize = 0 ;
     int numChars = 0 ;
     UniChar buf[2] ;
     if ( GetEventParameter( event, kEventParamTextInputSendText, typeUnicodeText, NULL, 0 , &dataSize, NULL ) == noErr )
     {
-        numChars = dataSize / sizeof( UniChar) ;
+        numChars = dataSize / sizeof( UniChar) + 1;
         charBuf = buf ;
 
-        if ( dataSize > sizeof(buf) )
+        if ( numChars * 2 > sizeof(buf) )
             charBuf = new UniChar[ numChars ] ;
         else
             charBuf = buf ;
 
         uniChars = new wchar_t[ numChars ] ;
         GetEventParameter( event, kEventParamTextInputSendText, typeUnicodeText, NULL, dataSize , NULL , charBuf ) ;
+               charBuf[ numChars - 1 ] = 0;
 #if SIZEOF_WCHAR_T == 2
         uniChars = (wchar_t*) charBuf ;
-        memcpy( uniChars , charBuf , dataSize ) ;
+        memcpy( uniChars , charBuf , numChars * 2 ) ;
 #else
         // the resulting string will never have more chars than the utf16 version, so this is safe
         wxMBConvUTF16 converter ;