From: Ran Benita Date: Tue, 12 Dec 2017 12:43:24 +0000 (+0200) Subject: xkbcomp/ast-build: fix memory leak when appending multi-keysyms X-Git-Tag: xkbcommon-0.8.0~7 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2963e29f0efbc9414d6f908dcfbf57ee30dc22a9;p=platform%2Fupstream%2Flibxkbcommon.git xkbcomp/ast-build: fix memory leak when appending multi-keysyms `syms` was not freed. Signed-off-by: Ran Benita --- diff --git a/src/darray.h b/src/darray.h index be0319f..5896d21 100644 --- a/src/darray.h +++ b/src/darray.h @@ -110,6 +110,9 @@ typedef darray (unsigned long) darray_ulong; #define darray_copy(arr_to, arr_from) \ darray_from_items((arr_to), (arr_from).item, (arr_from).size) +#define darray_concat(arr_to, arr_from) \ + darray_append_items((arr_to), (arr_from).item, (arr_from).size) + /*** String buffer ***/ #define darray_append_string(arr, str) do { \ diff --git a/src/xkbcomp/ast-build.c b/src/xkbcomp/ast-build.c index eeef76a..58f97f9 100644 --- a/src/xkbcomp/ast-build.c +++ b/src/xkbcomp/ast-build.c @@ -226,14 +226,12 @@ ExprAppendKeysymList(ExprDef *expr, xkb_keysym_t sym) ExprDef * ExprAppendMultiKeysymList(ExprDef *expr, ExprDef *append) { - xkb_keysym_t *syms; unsigned nSyms = darray_size(expr->keysym_list.syms); unsigned numEntries = darray_size(append->keysym_list.syms); darray_append(expr->keysym_list.symsMapIndex, nSyms); darray_append(expr->keysym_list.symsNumEntries, numEntries); - darray_steal(append->keysym_list.syms, &syms, NULL); - darray_append_items(expr->keysym_list.syms, syms, numEntries); + darray_concat(expr->keysym_list.syms, append->keysym_list.syms); FreeStmt((ParseCommon *) &append);