Crash if one of the recent files has an apostrophe `'` in it
Steps to reproduce:
- open Inkscape
- save a file with a single
'
in it's name using the save dialog - restart Inkscape
What happened?
- crash
(org.inkscape.Inkscape:138929): GLib-GIO-ERROR **: 01:05:54.990: g_menu_item_set_detailed_action: Detailed action name 'app.file-open-window('/home/user/hi'.svg')' has invalid format: 14:expected end of input
Thread 1 "inkscape" received signal SIGTRAP, Trace/breakpoint trap.
_g_log_abort (breakpoint=1) at ../../../glib/gmessages.c:554
554 ../../../glib/gmessages.c: No such file or directory.
(gdb) bt
#0 _g_log_abort (breakpoint=1) at ../../../glib/gmessages.c:554
#1 0x00007ffff61ce319 in g_log_default_handler (log_domain=log_domain@entry=0x7ffff52636ff "GLib-GIO", log_level=log_level@entry=6, message=message@entry=0x555556d44f60 "g_menu_item_set_detailed_action: Detailed action name 'app.file-open-window('/home/user/hi'.svg')' has invalid format: 14:expected end of input", unused_data=unused_data@entry=0x0) at ../../../glib/gmessages.c:3123
#2 0x00007ffff61ce55c in g_logv (log_domain=0x7ffff52636ff "GLib-GIO", log_level=G_LOG_LEVEL_ERROR, format=<optimised out>, args=args@entry=0x7fffffffd2e0) at ../../../glib/gmessages.c:1350
#3 0x00007ffff61ce743 in g_log (log_domain=log_domain@entry=0x7ffff52636ff "GLib-GIO", log_level=log_level@entry=G_LOG_LEVEL_ERROR, format=format@entry=0x7ffff52827d0 "g_menu_item_set_detailed_action: %s") at ../../../glib/gmessages.c:1415
#4 0x00007ffff520259f in g_menu_item_set_detailed_action (menu_item=menu_item@entry=0x555556dec930 [GMenuItem], detailed_action=detailed_action@entry=0x555556d79a20 "app.file-open-window('/home/user/hi'.svg')") at ../../../gio/gmenu.c:1105
#5 0x00007ffff5202633 in g_menu_item_new (label=0x7fffffffd570 "hi'.svg", detailed_action=0x555556d79a20 "app.file-open-window('/home/user/hi'.svg')") at ../../../gio/gmenu.c:1143
#6 0x00007ffff520265a in g_menu_insert (menu=0x5555557dbcf0 [GMenu], position=-1, label=<optimised out>, detailed_action=<optimised out>) at ../../../gio/gmenu.c:273
#7 0x00007ffff52026b4 in g_menu_append (menu=<optimised out>, label=<optimised out>, detailed_action=<optimised out>) at ../../../gio/gmenu.c:315
#8 0x00007ffff60c451f in Gio::Menu::append(Glib::ustring const&, Glib::ustring const&) (this=<optimised out>, label=..., detailed_action=...) at ../giomm/menu.h:97
#9 0x00007ffff7128a4c in build_menu() () at /usr/include/glibmm-2.4/glibmm/refptr.h:259
#10 0x00007ffff7822f7d in InkscapeApplication::on_startup2() (this=this@entry=0x5555555c20e0) at ../src/inkscape-application.cpp:755
#11 0x00007ffff7829578 in InkscapeApplication::on_activate() (this=0x5555555c20e0) at ../src/inkscape-application.cpp:996
#12 0x00007ffff7829a70 in InkscapeApplication::<lambda()>::operator() (__closure=<optimised out>) at ../src/inkscape-application.cpp:577
#13 sigc::adaptor_functor<InkscapeApplication::InkscapeApplication()::<lambda()> >::operator()(void) const (this=<optimised out>) at /usr/include/sigc++-2.0/sigc++/adaptors/adaptor_trait.h:256
#14 0x00007ffff7829a86 in sigc::internal::slot_call0<InkscapeApplication::InkscapeApplication()::<lambda()>, void>::call_it(sigc::internal::slot_rep *) (rep=<optimised out>) at /usr/include/sigc++-2.0/sigc++/functors/slot.h:132
#15 0x00007ffff5f68a7c in sigc::slot0<void>::operator()() const (this=0x555555737048) at /usr/include/sigc++-2.0/sigc++/functors/slot_base.h:335
#16 Glib::SignalProxyNormal::slot0_void_callback(_GObject*, void*) (self=<optimised out>, data=0x555555737040) at signalproxy.cc:103
#20 0x00007ffff50e80f3 in <emit signal ??? on instance 0x555555665210 [gtkmm__GtkApplication]> (instance=instance@entry=0x555555665210, signal_id=<optimised out>, detail=detail@entry=0) at ../../../gobject/gsignal.c:3555
#17 0x00007ffff50c8802 in g_closure_invoke (closure=0x555555737090, return_value=0x0, n_param_values=1, param_values=0x7fffffffda60, invocation_hint=0x7fffffffd9e0) at ../../../gobject/gclosure.c:810
#18 0x00007ffff50dc243 in signal_emit_unlocked_R (node=node@entry=0x5555556f5590, detail=detail@entry=0, instance=instance@entry=0x555555665210, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7fffffffda60) at ../../../gobject/gsignal.c:3813
#19 0x00007ffff50e7bbe in g_signal_emit_valist (instance=<optimised out>, signal_id=<optimised out>, detail=<optimised out>, var_args=var_args@entry=0x7fffffffdc10) at ../../../gobject/gsignal.c:3499
#21 0x00007ffff51f6a23 in g_application_activate (application=application@entry=0x555555665210 [gtkmm__GtkApplication]) at ../../../gio/gapplication.c:2303
#22 0x00007ffff51f6d98 in g_application_real_local_command_line (application=0x555555665210 [gtkmm__GtkApplication], arguments=0x7fffffffdd78, exit_status=0x7fffffffdd74) at ../../../gio/gapplication.c:1139
#23 0x00007ffff51f6f52 in g_application_run (application=0x555555665210 [gtkmm__GtkApplication], argc=<optimised out>, argv=<optimised out>) at ../../../gio/gapplication.c:2528
#24 0x0000555555557364 in main(int, char**) (argc=<optimised out>, argv=<optimised out>) at /usr/include/glibmm-2.4/glibmm/refptr.h:405
What should have happened?
No crash
Version info
- Inkscape 1.2-dev (7b6489a1, 2021-11-11) Linux Mint 20
- Bisection also points to !3611 (merged) (I landed on bcbbb3fd but it may just be the first that builds? I didn't look closely)