vcl/unx/gtk3/gtkinst.cxx | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)
New commits: commit 5e37a1d89dfaa12690841213bce0cb6d05faf90a Author: Stephan Bergmann <sberg...@redhat.com> AuthorDate: Fri Jun 25 16:00:26 2021 +0200 Commit: Caolán McNamara <caol...@redhat.com> CommitDate: Sun Jun 27 20:11:49 2021 +0200 Silence UBSan dynamic-type-mismatch for VclPtr member in GObject ...that wasn't properly initialized (in an --enable-dbgutil build; see also <https://gerrit.libreoffice.org/c/core/+/117878> "There appears to be no reason for (DBG_UTIL-only) ~VclPtr to be virtual", but even when VclPtr has no vtable, it arguably is to properly con- and destruct CustomCellRendererSurface::device). For example, in Writer clicking on the "Styles" icon in the side bar: > vcl/unx/gtk3/gtkinst.cxx:15144:10: runtime error: member call on address 0x625001b42668 which does not point to an object of type 'VclPtr<VirtualDevice>' > 0x625001b42668: note: object has invalid vptr > 50 62 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 10 8a f0 00 30 60 00 00 80 f8 19 02 > ^~~~~~~~~~~~~~~~~~~~~~~ > invalid vptr > #0 in (anonymous namespace)::ensure_device((anonymous namespace)::CustomCellRendererSurface*, weld::Widget*) at vcl/unx/gtk3/gtkinst.cxx:15144:10 Change-Id: Ic6ab75668e5b3ecca6d1e5743ed1907c8cbdb143 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117915 Tested-by: Jenkins Tested-by: Caolán McNamara <caol...@redhat.com> Reviewed-by: Caolán McNamara <caol...@redhat.com> diff --git a/vcl/unx/gtk3/gtkinst.cxx b/vcl/unx/gtk3/gtkinst.cxx index 42aee39d4d2c..228b5c1d8d3c 100644 --- a/vcl/unx/gtk3/gtkinst.cxx +++ b/vcl/unx/gtk3/gtkinst.cxx @@ -7014,6 +7014,10 @@ static gpointer custom_cell_renderer_surface_parent_class; static GType custom_cell_renderer_surface_get_type(); static void custom_cell_renderer_surface_class_init(CustomCellRendererSurfaceClass *klass); +static void custom_cell_renderer_surface_init(GTypeInstance * instance, gpointer) { + new(&CUSTOM_CELL_RENDERER_SURFACE(instance)->device) VclPtr<VirtualDevice>; +} + GType custom_cell_renderer_surface_get_type() { static GType type = 0; @@ -7030,7 +7034,7 @@ GType custom_cell_renderer_surface_get_type() nullptr, /* class data */ sizeof (CustomCellRendererSurface), /* instance size */ 0, /* nb preallocs */ - nullptr, /* instance init */ + &custom_cell_renderer_surface_init, /* instance init */ nullptr /* value table */ }; @@ -7105,6 +7109,7 @@ static void custom_cell_renderer_surface_finalize(GObject *object) g_free(cellsurface->id); cellsurface->device.disposeAndClear(); + cellsurface->device.~VclPtr<VirtualDevice>(); G_OBJECT_CLASS(custom_cell_renderer_surface_parent_class)->finalize(object); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits