summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArnaud Fontaine <arnau@debian.org>2010-12-23 15:29:33 +0900
committerArnaud Fontaine <arnau@debian.org>2010-12-23 15:35:21 +0900
commitccb0b5ceb2eab5876af76ec26a3a118988826601 (patch)
tree5d072e0e453ed600a7931829a1d6d06f27b42915
parent18b9b7d8dd7ad61b62936c8761ba94f4357e2e50 (diff)
downloadutil-keysyms-ccb0b5ceb2eab5876af76ec26a3a118988826601.tar.gz
Check whether realloc doesn't fail (reported by cppcheck)
-rw-r--r--keysyms/keysyms.c13
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;
}