Crash on File>Revert
<!-- See our full bug reporting guidelines at https://inkscape.org/contribute/report-bugs/ Writing a good bug report will ensure we'll be able to help efficiently. 🙂 --> #### Summary: <!-- Summarize the issue/suggestion concisely: --> 1.5-dev crashes on reverting a file. Regression from 1.4.x #### Steps to reproduce: <!-- Describe what you did (step-by-step) so we can reproduce: --> - open Inkscape - open an existing file - do anything - file>revert #### What happened? crash <details><summary>Backtrace</summary> ``` #0 0x00007ffff29e07c6 in Geom::Point::operator*= (this=this@entry=0x7fffffffa1a0, m=...) at /home/krir17/Programs/inkscape_code/inkscape/src/3rdparty/2geom/src/2geom/point.cpp:232 #1 0x00007ffff751de0a in Geom::operator* (lhs=<optimized out>, rhs=<optimized out>) at /home/krir17/Programs/inkscape_code/inkscape/src/3rdparty/2geom/include/2geom/utils.h:62 #2 SPDesktop::d2w (this=<optimized out>, p=<optimized out>) at /home/krir17/Programs/inkscape_code/inkscape/src/desktop.h:420 #3 0x00007ffff7a7fae9 in SPDesktop::zoom_absolute (this=0x0, center=..., zoom=zoom@entry=4.6719654000000004, keep_point=keep_point@entry=false) at /home/krir17/Programs/inkscape_code/inkscape/src/desktop.cpp:540 #4 0x00007ffff7b50652 in InkscapeApplication::document_revert (this=0x7fffffffbc00, document=<optimized out>, document@entry=0x52bbed0) at /home/krir17/Programs/inkscape_code/inkscape/src/inkscape-application.cpp:304 #5 0x00007ffff7a9b65d in sp_file_revert_dialog () at /home/krir17/Programs/inkscape_code/inkscape/src/file.cpp:146 #6 0x00007ffff7b7b9f9 in document_revert (win=<optimized out>) at /home/krir17/Programs/inkscape_code/inkscape/src/actions/actions-file-window.cpp:51 #7 0x00007ffff7b6d169 in std::__invoke_impl<void, void (* const&)(InkscapeWindow*), InkscapeWindow* const&> (__f=@0x14c2148: 0x7ffff7b7b9f0 <document_revert(InkscapeWindow*)>) at /usr/include/c++/14/bits/invoke.h:61 #8 std::__invoke<void (* const&)(InkscapeWindow*), InkscapeWindow* const&> (__fn=@0x14c2148: 0x7ffff7b7b9f0 <document_revert(InkscapeWindow*)>) at /usr/include/c++/14/bits/invoke.h:96 #9 std::invoke<void (* const&)(InkscapeWindow*), InkscapeWindow* const&> (__fn=@0x14c2148: 0x7ffff7b7b9f0 <document_revert(InkscapeWindow*)>) at /usr/include/c++/14/functional:120 #10 sigc::pointer_functor<void(InkscapeWindow*)>::operator() (this=0x14c2148, a#0=@0x14c2150: 0x14991f0) at /usr/include/sigc++-3.0/sigc++/functors/ptr_fun.h:98 #11 std::__invoke_impl<void, sigc::pointer_functor<void(InkscapeWindow*)>&, InkscapeWindow*&> (__f=...) at /usr/include/c++/14/bits/invoke.h:61 #12 std::__invoke<sigc::pointer_functor<void(InkscapeWindow*)>&, InkscapeWindow*&> (__fn=...) at /usr/include/c++/14/bits/invoke.h:96 #13 std::invoke<sigc::pointer_functor<void(InkscapeWindow*)>&, InkscapeWindow*&> (__fn=...) at /usr/include/c++/14/functional:120 #14 sigc::adaptor_functor<sigc::pointer_functor<void(InkscapeWindow*)> >::operator()<InkscapeWindow*&> (this=0x14c2148) at /usr/include/sigc++-3.0/sigc++/adaptors/adaptor_trait.h:100 #15 std::__invoke_impl<void, sigc::adaptor_functor<sigc::pointer_functor<void(InkscapeWindow*)> >&, InkscapeWindow*&> (__f=...) at /usr/include/c++/14/bits/invoke.h:61 #16 std::__invoke<sigc::adaptor_functor<sigc::pointer_functor<void(InkscapeWindow*)> >&, InkscapeWindow*&> (__fn=...) at /usr/include/c++/14/bits/invoke.h:96 #17 std::__apply_impl<sigc::adaptor_functor<sigc::pointer_functor<void(InkscapeWindow*)> >&, std::tuple<InkscapeWindow*&> const&, 0ul> (__f=..., __t=std::tuple containing = {...}) at /usr/include/c++/14/tuple:2921 #18 std::apply<sigc::adaptor_functor<sigc::pointer_functor<void(InkscapeWindow*)> >&, std::tuple<InkscapeWindow*&> const&> (__f=..., __t=std::tuple containing = {...}) at /usr/include/c++/14/tuple:2936 #19 sigc::bind_functor<-1, sigc::pointer_functor<void (InkscapeWindow*)>, InkscapeWindow*>::operator()<>() (this=0x14c2140) at /usr/include/sigc++-3.0/sigc++/adaptors/bind.h:194 #20 0x00007ffff7b6d183 in sigc::internal::slot_call<sigc::bind_functor<-1, sigc::pointer_functor<void(InkscapeWindow*)>, InkscapeWindow*>, void>::call_it (rep=<optimized out>) at /usr/include/sigc++-3.0/sigc++/functors/slot.h:154 #21 0x00007ffff48acb97 in SimpleAction_signal_activate_connect_callback () at /lib64/libgiomm-2.68.so.1 #22 0x00007ffff5afc7da in g_closure_invoke () at /lib64/libgobject-2.0.so.0 #23 0x00007ffff5b2cc4d in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0 #24 0x00007ffff5b1d3e9 in signal_emit_valist_unlocked () at /lib64/libgobject-2.0.so.0 #25 0x00007ffff5b1d671 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0 #26 0x00007ffff5b1d733 in g_signal_emit () at /lib64/libgobject-2.0.so.0 #27 0x00007ffff46e80f5 in g_simple_action_activate () at /lib64/libgio-2.0.so.0 #28 0x00007ffff3c7bd96 in gtk_popover_item_activate () at /lib64/libgtk-4.so.1 #29 0x00007ffff5afc7da in g_closure_invoke () at /lib64/libgobject-2.0.so.0 #30 0x00007ffff5b2c8f3 in signal_emit_unlocked_R.isra.0 () at /lib64/libgobject-2.0.so.0 #31 0x00007ffff5b1d3e9 in signal_emit_valist_unlocked () at /lib64/libgobject-2.0.so.0 #32 0x00007ffff5b1d671 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0 #33 0x00007ffff5b1d733 in g_signal_emit () at /lib64/libgobject-2.0.so.0 #34 0x00007ffff3a11890 in _gtk_marshal_VOID__DOUBLE_DOUBLE_UINT_BOXEDv () at /lib64/libgtk-4.so.1 #35 0x00007ffff5b1d55c in signal_emit_valist_unlocked () at /lib64/libgobject-2.0.so.0 #36 0x00007ffff5b1d671 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0 #37 0x00007ffff5b1d733 in g_signal_emit () at /lib64/libgobject-2.0.so.0 #38 0x00007ffff3abb5fc in gtk_gesture_click_handle_event.lto_priv () at /lib64/libgtk-4.so.1 #39 0x00007ffff3bea678 in gtk_widget_run_controllers () at /lib64/libgtk-4.so.1 #40 0x00007ffff3beaa98 in _gtk_widget_captured_event () at /lib64/libgtk-4.so.1 #41 0x00007ffff3afcbfa in gtk_propagate_event_internal () at /lib64/libgtk-4.so.1 #42 0x00007ffff3afd723 in gtk_main_do_event () at /lib64/libgtk-4.so.1 #43 0x00007ffff3b21e00 in surface_event () at /lib64/libgtk-4.so.1 #44 0x00007ffff3d6e9ae in _gdk_marshal_BOOLEAN__POINTERv () at /lib64/libgtk-4.so.1 #45 0x00007ffff3e0304a in gdk_surface_event_marshallerv () at /lib64/libgtk-4.so.1 #46 0x00007ffff5b1d55c in signal_emit_valist_unlocked () at /lib64/libgobject-2.0.so.0 #47 0x00007ffff5b1d671 in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0 #48 0x00007ffff5b1d733 in g_signal_emit () at /lib64/libgobject-2.0.so.0 #49 0x00007ffff3eb6475 in gdk_surface_handle_event.isra () at /lib64/libgtk-4.so.1 #50 0x00007ffff3d846f6 in gdk_event_source_dispatch.lto_priv () at /lib64/libgtk-4.so.1 #51 0x00007ffff51d728c in g_main_context_dispatch_unlocked.lto_priv () at /lib64/libglib-2.0.so.0 #52 0x00007ffff52377b8 in g_main_context_iterate_unlocked.isra () at /lib64/libglib-2.0.so.0 #53 0x00007ffff51d8783 in g_main_context_iteration () at /lib64/libglib-2.0.so.0 #54 0x00007ffff46e0dcd in g_application_run () at /lib64/libgio-2.0.so.0 #55 0x0000000000205348 in main (argc=<optimized out>, argv=<optimized out>) at /usr/include/c++/14/bits/shared_ptr_base.h:1666 ``` </details> #### What should have happened? No crash #### Version info <!-- Open 'Help > About' and click on the little bug icon in the bottom right corner that copies the debug information to your clipboard. For command line users, run 'inkscape --debug-info'. For Inkscape 1.0.2 and older, please manually add the Inkscape Version and Operating System Version. The Inkscape version is listed in the About dialog. For command line users, run 'inkscape -V' Paste the information in the empty space between the apostrophes below: --> Inkscape 1.5-dev (48f20c1225, 2024-12-28, custom) <!-- ❤️ Thank you for filling in a new bug report, we appreciate the help! ❤️ Please be patient while we try to find the time to look into your issue. Remember that Inkscape is developed by volunteers in their spare time, we'll try our best to respond to all reports. --> <!-- Please be careful when/after writing # for example in logs, code, or versions of linux - use inline code span - single backticks (`) before and after it, like this - `#1618` - use multi-line code block - triple backticks (```) to fence/enclose console logs - attach long logs as a text file. -->
issue