On Tue, Jul 23, 2024 at 12:50 PM Akihiko Odaki <akihiko.od...@daynix.com>
wrote:

> Commit 2523baf7fb4d ("qemu-keymap: Make references to allocations
> static") made references to allocations static to ensure LeakSanitizer
> can track them. This trick unfortunately did not work with gcc version
> 14.0.1; that compiler is clever enough to know that the value of the
> "state" variable is only referred in the current execution of the
> function and to put it on the stack.
>
> Release references to allocations and suppress the error once for all.
>
> Signed-off-by: Akihiko Odaki <akihiko.od...@daynix.com>
> ---
>  qemu-keymap.c | 9 ++++++---
>  1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/qemu-keymap.c b/qemu-keymap.c
> index 701e4332af87..6707067fea04 100644
> --- a/qemu-keymap.c
> +++ b/qemu-keymap.c
> @@ -154,9 +154,9 @@ static xkb_mod_mask_t get_mod(struct xkb_keymap *map,
> const char *name)
>
>  int main(int argc, char *argv[])
>  {
> -    static struct xkb_context *ctx;
> -    static struct xkb_keymap *map;
> -    static struct xkb_state *state;
> +    struct xkb_context *ctx;
> +    struct xkb_keymap *map;
> +    struct xkb_state *state;
>      xkb_mod_index_t mod, mods;
>      int rc;
>
> @@ -213,6 +213,7 @@ int main(int argc, char *argv[])
>
>      ctx = xkb_context_new(XKB_CONTEXT_NO_FLAGS);
>      map = xkb_keymap_new_from_names(ctx, &names,
> XKB_KEYMAP_COMPILE_NO_FLAGS);
> +    xkb_context_unref(ctx);
>      if (!map) {
>          /* libxkbcommon prints error */
>          exit(1);
> @@ -234,6 +235,8 @@ int main(int argc, char *argv[])
>
>      state = xkb_state_new(map);
>      xkb_keymap_key_for_each(map, walk_map, state);
> +    xkb_state_unref(state);
> +    xkb_keymap_unref(map);
>
>      /* add quirks */
>      fprintf(outfile,
>
> ---
> base-commit: a87a7c449e532130d4fa8faa391ff7e1f04ed660
> change-id: 20240723-unref-d62e2b8338f4
>
> Best regards,
> --
> Akihiko Odaki <akihiko.od...@daynix.com>
>

Reviewed-by: Marc-André Lureau <marcandre.lur...@redhat.com>


-- 
Marc-André Lureau

Reply via email to