From f0989fc754bd7841906bbd9e1cb843eefe01ac98 Mon Sep 17 00:00:00 2001 From: TCY16 Date: Mon, 26 Sep 2022 11:49:49 +0200 Subject: [PATCH] differentiate between malloc and regional_alloc --- util/data/msgreply.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/util/data/msgreply.c b/util/data/msgreply.c index 92125982f..3a5308c42 100644 --- a/util/data/msgreply.c +++ b/util/data/msgreply.c @@ -673,6 +673,9 @@ void reply_info_delete(void* d, void* ATTR_UNUSED(arg)) { struct reply_info* r = (struct reply_info*)d; + if (r->reason_bogus_str_size) { + free(r->reason_bogus_str); + } free(r); } @@ -761,9 +764,14 @@ reply_info_copy(struct reply_info* rep, struct alloc_cache* alloc, if(!cp) return NULL; - if (rep->reason_bogus_str_size > 0 && rep->reason_bogus_str && region) { - cp->reason_bogus_str = (char*)regional_alloc(region, - sizeof(char) * (rep->reason_bogus_str_size + 1)); + if (rep->reason_bogus_str_size > 0 && rep->reason_bogus_str) { + if (region) { + cp->reason_bogus_str = (char*)regional_alloc(region, + sizeof(char) * (rep->reason_bogus_str_size + 1)); + } + else { + cp->reason_bogus_str = malloc(sizeof(char) * (rep->reason_bogus_str_size + 1)); + } if (!(cp->reason_bogus_str)) { if(!region) -- 2.47.3