From: Petr Machata Date: Mon, 30 Nov 2009 12:58:15 +0000 (+0100) Subject: dwarflint: Plug a leak X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=4bee9db9431e290cbe5c85120beed9435d4c5061;p=thirdparty%2Felfutils.git dwarflint: Plug a leak --- diff --git a/src/dwarflint/where.c b/src/dwarflint/where.c index 6e3d5d89c..3bfe0f606 100644 --- a/src/dwarflint/where.c +++ b/src/dwarflint/where.c @@ -98,9 +98,12 @@ where_fmt (const struct where *wh, char *ptr) #define SETUP_ADDR(N) \ char *addr##N##s; \ + bool free_s##N = false; \ if (wh->addr##N == (uint64_t)-1) \ addr##N##s = NULL; \ - else if (x_asprintf (&addr##N##s, inf->addr##N##f, wh->addr##N) < 0) \ + else if (x_asprintf (&addr##N##s, inf->addr##N##f, wh->addr##N) >= 0) \ + free_s##N = true; \ + else \ addr##N##s = "(fmt error)" SETUP_ADDR (1); @@ -137,6 +140,13 @@ where_fmt (const struct where *wh, char *ptr) else if (addr1s != NULL) ptr = stpcpy (stpcpy (stpcpy (ptr, inf->addr1n), " "), addr1s); + if (free_s1) + free (addr1s); + if (free_s2) + free (addr2s); + if (free_s3) + free (addr3s); + if (wh->ref != NULL && !is_reloc) { ptr = stpcpy (ptr, " (");