diff options
author | Arnaud Fontaine <arnau@debian.org> | 2010-12-23 15:29:33 +0900 |
---|---|---|
committer | Arnaud Fontaine <arnau@debian.org> | 2010-12-23 15:35:21 +0900 |
commit | ccb0b5ceb2eab5876af76ec26a3a118988826601 (patch) | |
tree | 5d072e0e453ed600a7931829a1d6d06f27b42915 | |
parent | 18b9b7d8dd7ad61b62936c8761ba94f4357e2e50 (diff) | |
download | util-keysyms-ccb0b5ceb2eab5876af76ec26a3a118988826601.tar.gz |
Check whether realloc doesn't fail (reported by cppcheck)
-rw-r--r-- | keysyms/keysyms.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/keysyms/keysyms.c b/keysyms/keysyms.c index 062424c..3ea0e13 100644 --- a/keysyms/keysyms.c +++ b/keysyms/keysyms.c @@ -243,7 +243,7 @@ xcb_key_symbols_get_keycode(xcb_key_symbols_t *syms, { xcb_keysym_t ks; int j, nresult = 0; - xcb_keycode_t i, min, max, *result = NULL; + xcb_keycode_t i, min, max, *result = NULL, *result_np = NULL; if(syms) { @@ -258,7 +258,16 @@ xcb_key_symbols_get_keycode(xcb_key_symbols_t *syms, if(ks == keysym) { nresult++; - result = realloc(result, sizeof(xcb_keycode_t) * (nresult + 1)); + result_np = realloc(result, + sizeof(xcb_keycode_t) * (nresult + 1)); + + if(result_np == NULL) + { + free(result); + return NULL; + } + + result = result_np; result[nresult - 1] = i; result[nresult] = XCB_NO_SYMBOL; } |