GtkAtSpiContext leaks context_path on repeated realize/unrealize calls
The old self->context_path
in gtk_at_spi_context_realize()
gets overwritten if realize/unrealize are called repeatedly, because it is not free'd in gtk_at_spi_context_unrealize()
. This can be seen for example when switching between stack pages in widget factory:
==132117== 2,706 bytes in 41 blocks are definitely lost in loss record 34,272 of 34,816
==132117== at 0x4839809: malloc (vg_replace_malloc.c:307)
==132117== by 0x5135600: g_malloc (gmem.c:106)
==132117== by 0x514F8DE: g_strconcat (gstrfuncs.c:594)
==132117== by 0x4C1DFB8: gtk_at_spi_context_realize (gtkatspicontext.c:1469)
==132117== by 0x49219E4: gtk_at_context_realize (gtkatcontext.c:661)
==132117== by 0x49219E4: gtk_at_context_realize (gtkatcontext.c:655)
==132117== by 0x4B60202: gtk_widget_root (gtkwidget.c:2353)
==132117== by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117== by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117== by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117== by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117== by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117== by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117== by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117== by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117== by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117== by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117== by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117== by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117== by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117== by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117== by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117== by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117== by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117== by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117== by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117== by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117== by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117== by 0x4B60334: gtk_widget_forall (gtkwidget.c:11740)
==132117== by 0x4B60334: gtk_widget_real_root (gtkwidget.c:828)
==132117== by 0x4B6020F: gtk_widget_root (gtkwidget.c:2355)
==132117== by 0x4B60AF7: gtk_widget_reposition_after (gtkwidget.c:5773)
==132117== by 0x4ABC1E7: gtk_stack_add_page (gtkstack.c:1465)