From: Ray Strode Date: Fri, 22 Dec 2023 13:41:30 +0000 (-0500) Subject: ply-keymap-icon: Fix memory leak X-Git-Tag: 23.356.9~3^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2d01c5cda76857df57a70b531d8acba17fe6ec8d;p=thirdparty%2Fplymouth.git ply-keymap-icon: Fix memory leak It seems like there's a memory leak with the keymap icon text if there isn't a hit. This commit fixes that, and renames some of the variables to make it a little clearer what's going on --- diff --git a/src/libply-splash-graphics/ply-keymap-icon.c b/src/libply-splash-graphics/ply-keymap-icon.c index d0891c48..b3dfabfb 100644 --- a/src/libply-splash-graphics/ply-keymap-icon.c +++ b/src/libply-splash-graphics/ply-keymap-icon.c @@ -84,7 +84,7 @@ ply_keymap_icon_fill_keymap_info (ply_keymap_icon_t *keymap_icon) { const char *keymap_with_variant; ply_renderer_t *renderer; - char *keymap, *compare_keymap; + char *keymap_without_variant; int i; keymap_icon->keymap_offset = -1; @@ -94,18 +94,19 @@ ply_keymap_icon_fill_keymap_info (ply_keymap_icon_t *keymap_icon) if (!keymap_with_variant) return; - keymap = ply_keymap_normalize_keymap (keymap_with_variant); + keymap_without_variant = ply_keymap_normalize_keymap (keymap_with_variant); for (i = 0; ply_keymap_metadata[i].name; i++) { + const char *icon_text = NULL; + if (ply_keymap_metadata[i].type == PLY_LAYOUT_TERMINAL) { - compare_keymap = strdup (keymap); + icon_text = keymap_without_variant; } else if (ply_keymap_metadata[i].type == PLY_LAYOUT_XKB) { - compare_keymap = strdup (keymap_with_variant); + icon_text = keymap_with_variant; } - keymap_icon->keymap_name = compare_keymap; - - if (strcmp (ply_keymap_metadata[i].name, compare_keymap) == 0) { + if (strcmp (ply_keymap_metadata[i].name, icon_text) == 0) { + keymap_icon->keymap_name = strdup (icon_text); keymap_icon->keymap_offset = ply_keymap_metadata[i].offset; keymap_icon->keymap_width = ply_keymap_metadata[i].width; keymap_icon->has_prerendered_text = true; @@ -114,9 +115,9 @@ ply_keymap_icon_fill_keymap_info (ply_keymap_icon_t *keymap_icon) } if (keymap_icon->keymap_offset == -1) - ply_trace ("Warning: no pre-rendered text for '%s' keymap", keymap); + ply_trace ("Warning: no pre-rendered text for '%s' keymap", keymap_without_variant); - free (keymap); + free (keymap_without_variant); } ply_keymap_icon_t *