sample-client: fix to use calloc() and memcpy() instead of using realloc() 39/144439/2
authorSung-Jin Park <sj76.park@samsung.com>
Thu, 17 Aug 2017 00:35:16 +0000 (09:35 +0900)
committerJuyeon Lee <juyeonne.lee@samsung.com>
Mon, 21 Aug 2017 08:07:59 +0000 (08:07 +0000)
Change-Id: I794448a29d6ed406b7a6c163b0b8f0c589f9e06d
Signed-off-by: Sung-Jin Park <sj76.park@samsung.com>
src/samples/sample-client.c

index 6728378..d413a4a 100644 (file)
@@ -86,6 +86,7 @@ find_keycode(struct xkb_keymap *keymap, xkb_keycode_t key, void *data)
        xkb_keysym_t keysym = found_keycodes->keysym;
        int nsyms = 0;
        const xkb_keysym_t *syms_out = NULL;
+       xkb_keycode_t *tmp_keycodes = NULL;
 
        ERROR_CHECK(keymap, return, "[%s] Invalid keymap !\n", __FUNCTION__);
 
@@ -95,9 +96,17 @@ find_keycode(struct xkb_keymap *keymap, xkb_keycode_t key, void *data)
        {
                if (*syms_out == keysym)
                {
-                       found_keycodes->nkeycodes++;
-                       found_keycodes->keycodes = realloc(found_keycodes->keycodes, sizeof(int)*found_keycodes->nkeycodes);
-                       found_keycodes->keycodes[found_keycodes->nkeycodes-1] = key;
+                       tmp_keycodes = calloc(1, sizeof(int)*(found_keycodes->nkeycodes+1));
+
+                       if (tmp_keycodes)
+                       {
+                               memcpy(tmp_keycodes, found_keycodes->keycodes, sizeof(int)*found_keycodes->nkeycodes);
+                               free(found_keycodes->keycodes);
+
+                               found_keycodes->nkeycodes++;
+                               found_keycodes->keycodes = tmp_keycodes;
+                               found_keycodes->keycodes[found_keycodes->nkeycodes-1] = key;
+                       }
                }
        }
 }