ecore_cocoa: explicity allocate for keyname and key

Summary:
Allocate memory for keyname and key. Also refactor
unnecessary calloc and free.

Reviewers: #committers, zmike, devilhorns

Reviewed By: zmike

Subscribers: cedric

Tags: #efl

Differential Revision: https://phab.enlightenment.org/D6366
This commit is contained in:
Alastair Poole 2018-06-22 12:41:05 -04:00 committed by Mike Blumenkrantz
parent 8f95b17f39
commit 9d3b5079db
1 changed files with 37 additions and 27 deletions

View File

@ -258,29 +258,37 @@ _ecore_cocoa_feed_events(void *anEvent)
Ecore_Event_Key *evDown = NULL; Ecore_Event_Key *evDown = NULL;
Ecore_Event_Key *evUp = NULL; Ecore_Event_Key *evUp = NULL;
const char *key = NULL;
evDown = calloc(1, sizeof (Ecore_Event_Key)); int keylen;
if (!evDown) return pass;
// Turn special key flags on // Turn special key flags on
if (flags & NSEventModifierFlagShift) if (flags & NSEventModifierFlagShift)
evDown->key = "Shift_L"; key = "Shift_L";
else if (flags & NSEventModifierFlagControl) else if (flags & NSEventModifierFlagControl)
evDown->key = "Control_L"; key = "Control_L";
else if (flags & NSEventModifierFlagOption) else if (flags & NSEventModifierFlagOption)
evDown->key = "Alt_L"; key = "Alt_L";
else if (flags & NSEventModifierFlagCommand) else if (flags & NSEventModifierFlagCommand)
evDown->key = "Super_L"; key = "Super_L";
else if (flags & NSEventModifierFlagCapsLock) else if (flags & NSEventModifierFlagCapsLock)
evDown->key = "Caps_Lock"; key = "Caps_Lock";
else if (flags & NSEventModifierFlagNumericPad) else if (flags & NSEventModifierFlagNumericPad)
evDown->key = "Num_Lock"; key = "Num_Lock";
if (evDown->key) if (key)
{ {
keylen = strlen(key);
evDown = calloc(1, sizeof (Ecore_Event_Key) + (keylen * 2) + 2);
if (!evDown) return pass;
evDown->keyname = (char *)(evDown + 1);
evDown->key = evDown->keyname + keylen + 1;
strcpy((char *) evDown->keyname, key);
strcpy((char *) evDown->key, key);
evDown->window = (Ecore_Window)window.ecore_window_data; evDown->window = (Ecore_Window)window.ecore_window_data;
evDown->event_window = evDown->window; evDown->event_window = evDown->window;
evDown->keyname = evDown->key;
evDown->timestamp = time; evDown->timestamp = time;
evDown->string = NULL; evDown->string = NULL;
ecore_event_add(ECORE_EVENT_KEY_DOWN, evDown, NULL, NULL); ecore_event_add(ECORE_EVENT_KEY_DOWN, evDown, NULL, NULL);
@ -288,42 +296,44 @@ _ecore_cocoa_feed_events(void *anEvent)
break; break;
} }
free(evDown); key = NULL;
evUp = calloc(1, sizeof (Ecore_Event_Key));
if (!evUp)
{
return pass;
}
NSUInteger changed_flags = flags ^ old_flags; NSUInteger changed_flags = flags ^ old_flags;
// Turn special key flags off // Turn special key flags off
if (changed_flags & NSEventModifierFlagShift) if (changed_flags & NSEventModifierFlagShift)
evUp->key = "Shift_L"; key = "Shift_L";
else if (changed_flags & NSEventModifierFlagControl) else if (changed_flags & NSEventModifierFlagControl)
evUp->key = "Control_L"; key = "Control_L";
else if (changed_flags & NSEventModifierFlagOption) else if (changed_flags & NSEventModifierFlagOption)
evUp->key = "Alt_L"; key = "Alt_L";
else if (changed_flags & NSEventModifierFlagCommand) else if (changed_flags & NSEventModifierFlagCommand)
evUp->key = "Super_L"; key = "Super_L";
else if (changed_flags & NSEventModifierFlagCapsLock) else if (changed_flags & NSEventModifierFlagCapsLock)
evUp->key = "Caps_Lock"; key = "Caps_Lock";
else if (changed_flags & NSEventModifierFlagNumericPad) else if (changed_flags & NSEventModifierFlagNumericPad)
evUp->key = "Num_Lock"; key = "Num_Lock";
if (evUp->key) if (key)
{ {
keylen = strlen(key);
evUp = calloc(1, sizeof (Ecore_Event_Key) + (keylen * 2) + 2);
if (!evUp) return pass;
evUp->keyname = (char *)(evUp + 1);
evUp->key = evUp->keyname + keylen + 1;
strcpy((char *) evUp->keyname, key);
strcpy((char *) evUp->key, key);
evUp->window = (Ecore_Window)window.ecore_window_data; evUp->window = (Ecore_Window)window.ecore_window_data;
evUp->event_window = evUp->window; evUp->event_window = evUp->window;
evUp->keyname = evUp->key;
evUp->timestamp = time; evUp->timestamp = time;
evUp->string = NULL; evUp->string = NULL;
ecore_event_add(ECORE_EVENT_KEY_UP, evUp, NULL, NULL); ecore_event_add(ECORE_EVENT_KEY_UP, evUp, NULL, NULL);
old_flags = flags; old_flags = flags;
break; break;
} }
free(evUp);
break; break;
} }