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