From b5a4a01af4ef4f5edefacf45dc173f559d09c4b5 Mon Sep 17 00:00:00 2001 From: Mike Frysinger Date: Sat, 9 Jan 2021 00:54:57 -0500 Subject: [PATCH] sim: hw: rework code to avoid gcc warnings Newer gcc thinks we might return a pointer to a stack buffer, but we don't -- we strdup it before returning. Rework the code to just malloc the buffer from the start and avoid the stack+strdup. --- sim/common/ChangeLog | 5 +++++ sim/common/hw-base.c | 10 +++------- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog index 52a2003e9c6..28284ff8444 100644 --- a/sim/common/ChangeLog +++ b/sim/common/ChangeLog @@ -1,3 +1,8 @@ +2021-01-09 Mike Frysinger + + * hw-base.c (full_name_of_hw): Delete full_name. Replace + hw_strdup call with hw_malloc. + 2021-01-09 Mike Frysinger * cgen-par.c: Include stdlib.h. diff --git a/sim/common/hw-base.c b/sim/common/hw-base.c index d4b519845d1..87ca7292e55 100644 --- a/sim/common/hw-base.c +++ b/sim/common/hw-base.c @@ -281,11 +281,10 @@ full_name_of_hw (struct hw *leaf, unsigned sizeof_buf) { /* get a buffer */ - char full_name[1024]; - if (buf == (char*)0) + if (buf == NULL) { - buf = full_name; - sizeof_buf = sizeof (full_name); + sizeof_buf = 1024; + buf = hw_malloc (leaf, sizeof_buf); } /* use head recursion to construct the path */ @@ -318,9 +317,6 @@ full_name_of_hw (struct hw *leaf, strcat (buf, unit); } - /* return it usefully */ - if (buf == full_name) - buf = hw_strdup (leaf, full_name); return buf; } -- 2.30.2