diff options
author | Laurent Vivier <laurent@vivier.eu> | 2021-11-05 17:52:54 +0100 |
---|---|---|
committer | Laurent Vivier <laurent@vivier.eu> | 2021-11-09 16:42:49 +0100 |
commit | 5db83c7e90ec6c0b28995b537bb03942edcd4164 (patch) | |
tree | 1609f3760d6c37a5caa6db94844e91c9f818ccaa /hw/display | |
parent | 2b22e7540d6ab4efe82d442363e3fc900cea6584 (diff) |
macfb: fix a memory leak (CID 1465231)
Rewrite the function using g_string_append_printf() rather than
g_strdup_printf()/g_strconcat().
Fixes: df8abbbadf74 ("macfb: add common monitor modes supported by the MacOS toolbox ROM")
Cc: mark.cave-ayland@ilande.co.uk
Reported-by: Peter Maydell <peter.maydell@linaro.org>
Suggested-by: Peter Maydell <peter.maydell@linaro.org>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Reviewed-by: Peter Maydell <peter.maydell@linaro.org>
Reviewed-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Message-Id: <20211105165254.3544369-1-laurent@vivier.eu>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
Diffstat (limited to 'hw/display')
-rw-r--r-- | hw/display/macfb.c | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/hw/display/macfb.c b/hw/display/macfb.c index 4b352eb89c..277d3e6633 100644 --- a/hw/display/macfb.c +++ b/hw/display/macfb.c @@ -440,21 +440,18 @@ static MacFbMode *macfb_find_mode(MacfbDisplayType display_type, static gchar *macfb_mode_list(void) { - gchar *list = NULL; - gchar *mode; + GString *list = g_string_new(""); MacFbMode *macfb_mode; int i; for (i = 0; i < ARRAY_SIZE(macfb_mode_table); i++) { macfb_mode = &macfb_mode_table[i]; - mode = g_strdup_printf(" %dx%dx%d\n", macfb_mode->width, + g_string_append_printf(list, " %dx%dx%d\n", macfb_mode->width, macfb_mode->height, macfb_mode->depth); - list = g_strconcat(mode, list, NULL); - g_free(mode); } - return list; + return g_string_free(list, FALSE); } @@ -643,7 +640,7 @@ static bool macfb_common_realize(DeviceState *dev, MacfbState *s, Error **errp) gchar *list; error_setg(errp, "unknown display mode: width %d, height %d, depth %d", s->width, s->height, s->depth); - list = macfb_mode_list(); + list = macfb_mode_list(); error_append_hint(errp, "Available modes:\n%s", list); g_free(list); |