X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Ffilter%2Ffilter-visitor-generate-bytecode.c;fp=src%2Flib%2Flttng-ctl%2Ffilter%2Ffilter-visitor-generate-bytecode.c;h=898072227775b2e568d5c7a90033e0403958753a;hp=39f74591f2a433e791a97f71145d0ce474a827ed;hb=d0b96690836f4b876096f3dc14801f8e25281a77;hpb=785d2d0dc3aec3a4e44fcf677155dd07e8e4cc1f diff --git a/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c b/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c index 39f74591f..898072227 100644 --- a/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c +++ b/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c @@ -107,11 +107,14 @@ int32_t bytecode_reserve(struct lttng_filter_bytecode_alloc **fb, uint32_t align return -EINVAL; if (new_alloc_len > old_alloc_len) { + struct lttng_filter_bytecode_alloc *newptr; + new_alloc_len = max_t(uint32_t, 1U << get_count_order(new_alloc_len), old_alloc_len << 1); - *fb = realloc(*fb, new_alloc_len); - if (!*fb) + newptr = realloc(*fb, new_alloc_len); + if (!newptr) return -ENOMEM; + *fb = newptr; /* We zero directly the memory from start of allocation. */ memset(&((char *) *fb)[old_alloc_len], 0, new_alloc_len - old_alloc_len); (*fb)->alloc_len = new_alloc_len;