chore(mac): change bitmapoffset + bitmapsize to prevent buffer problems

This commit is contained in:
Sabine 2024-08-16 17:11:51 +02:00
parent dd0ebc4325
commit 23c66922ce
3 changed files with 9 additions and 3 deletions

View file

@ -303,7 +303,6 @@ KMX_DWORD mac_KMX_get_KeyVal_From_KeyCode_dk(const UCKeyboardLayout* keyboard_la
* or else the keyval obtained from Keycode and shiftstate and caps;
*/
KMX_DWORD mac_KMX_get_KeyValUnderlying_From_KeyCodeUnderlying(const UCKeyboardLayout* keyboard_layout, KMX_DWORD kc_underlying, KMX_DWORD vk_ShiftState, PKMX_WCHAR deadKey) {
PKMX_WCHAR dky = NULL;
UInt32 isdk = 0;
KMX_DWORD keyV;
int caps = 0;
@ -315,7 +314,9 @@ KMX_DWORD mac_KMX_get_KeyValUnderlying_From_KeyCodeUnderlying(const UCKeyboardLa
// if there was a deadkey return 0xFFFF and copy deadkey into dky; else return the keyvalue
if (isdk != 0) {
dky = (PKMX_WCHAR)(std::u16string(1, keyV)).c_str();
PKMX_WCHAR dky = NULL;
std::u16string keyVS(1, keyV);
dky = (PKMX_WCHAR) keyVS.c_str();
*deadKey = *dky;
return 0xFFFF;
}

View file

@ -285,6 +285,9 @@ LPKMX_KEYBOARD KMX_CopyKeyboard(PKMX_BYTE bufp, PKMX_BYTE base) {
kbp->dwFlags = ckbp->dwFlags;
kbp->dwHotKey = ckbp->dwHotKey;
kbp->dpBitmapOffset = ckbp->dpBitmapOffset;
kbp->dwBitmapSize = ckbp->dwBitmapSize;
kbp->dpStoreArray = (LPKMX_STORE)bufp;
bufp += sizeof(KMX_STORE) * kbp->cxStoreArray;

View file

@ -3,7 +3,9 @@ project('mcompile', 'c', 'cpp',
meson_version: '>=1.0')
# see https://github.com/keymanapp/keyman/pull/11334#issuecomment-2290784399
add_project_arguments('-O0', language : 'cpp')
add_project_arguments('-O1', language : 'cpp')
// _S2 was // add_project_arguments('-O0', language : 'cpp')
carbon = dependency('Carbon')