Crash editing nested groups with mesh gradients
<!-- 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: --> Inkscape crashes when selecting an object (in this case a group of paths) that has been copied into a file using 1.3 from a file created in 0.91 #### Steps to reproduce: <!-- Describe what you did (step-by-step) so we can reproduce: --> - open Inkscape - load file that was created with 0.91 - copy group of paths from file made with in 0.91 (that was opened in version 1.3) - paste into file in ver1.3 - (inkscape crashes) - open inkscape again and load the emergency saved file - try to select the copied group of paths #### What happened? Inkscape crashes #### What should have happened? the copied group of paths would be selected Sample attachments: the_mound is the 0.91 file, testing new stuff is the new one. (g4869 in the layers and objects is the problem group) <!-- Attach the sample file(s) highlighting the issue, if appropriate. --> [the_mound.svg](/uploads/57a2ea3f70d6ff4618584f8aeead232f/the_mound.svg!)[testing_new_stuff.svg](/uploads/a96f7383bfac4cf3e06b27483f493247/testing_new_stuff.svg) #### 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: --> ``` <pre> 0# boost::stacktrace::basic_stacktrace<std::allocator<boost::stacktrace::frame> >::init(unsigned long long, unsigned long long) in libinkscape_base 1# Inkscape::Application::crash_handler(int) in libinkscape_base 2# 0x00007FF75FCB21B2 in inkscape 3# _C_specific_handler in ntdll 4# _chkstk in ntdll 5# _RtlRaiseException in ntdll 6# _KiUserExceptionDispatcher in ntdll 7# SPGradient::create_preview_pattern(double) in libinkscape_base 8# Inkscape::UI::Widget::GradientImage::on_draw(Cairo::RefPtr<Cairo::Context> const&) in libinkscape_base 9# Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) in libgtkmm_3_0_1 10# _gtk_widget_get_allocated_baseline in libgtk_3_0 11# _gtk_container_propagate_draw in libgtk_3_0 12# _gtk_container_propagate_draw in libgtk_3_0 13# _gtk_border_get_type in libgtk_3_0 14# _gtk_container_get_path_for_child in libgtk_3_0 15# _gtk_style_properties_lookup_property in libgtk_3_0 16# _gtk_border_get_type in libgtk_3_0 17# _gtk_widget_get_allocated_baseline in libgtk_3_0 18# _gtk_container_propagate_draw in libgtk_3_0 19# _gtk_container_propagate_draw in libgtk_3_0 20# _gtk_entry_completion_get_inline_selection in libgtk_3_0 21# Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) in libgtkmm_3_0_1 22# Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) in libgtkmm_3_0_1 23# _gtk_widget_get_allocated_baseline in libgtk_3_0 24# _gtk_container_propagate_draw in libgtk_3_0 25# _gtk_container_propagate_draw in libgtk_3_0 26# _gtk_border_get_type in libgtk_3_0 27# _gtk_container_get_path_for_child in libgtk_3_0 28# _gtk_style_properties_lookup_property in libgtk_3_0 29# _gtk_border_get_type in libgtk_3_0 30# _gtk_widget_get_allocated_baseline in libgtk_3_0 31# _gtk_container_propagate_draw in libgtk_3_0 32# _gtk_container_propagate_draw in libgtk_3_0 33# _gtk_gl_area_attach_buffers in libgtk_3_0 34# _gtk_container_get_path_for_child in libgtk_3_0 35# _gtk_style_properties_lookup_property in libgtk_3_0 36# _gtk_gl_area_attach_buffers in libgtk_3_0 37# _gtk_widget_get_allocated_baseline in libgtk_3_0 38# _gtk_container_propagate_draw in libgtk_3_0 39# _gtk_container_propagate_draw in libgtk_3_0 40# _gtk_border_get_type in libgtk_3_0 41# _gtk_container_get_path_for_child in libgtk_3_0 42# _gtk_style_properties_lookup_property in libgtk_3_0 43# _gtk_border_get_type in libgtk_3_0 44# Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) in libgtkmm_3_0_1 45# Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) in libgtkmm_3_0_1 46# _gtk_widget_get_allocated_baseline in libgtk_3_0 47# _gtk_container_propagate_draw in libgtk_3_0 48# _gtk_container_propagate_draw in libgtk_3_0 49# _gtk_border_get_type in libgtk_3_0 50# _gtk_container_get_path_for_child in libgtk_3_0 51# _gtk_style_properties_lookup_property in libgtk_3_0 52# _gtk_border_get_type in libgtk_3_0 53# _gtk_widget_get_allocated_baseline in libgtk_3_0 54# _gtk_container_propagate_draw in libgtk_3_0 55# _gtk_container_propagate_draw in libgtk_3_0 56# _gtk_border_get_type in libgtk_3_0 57# _gtk_container_get_path_for_child in libgtk_3_0 58# _gtk_style_properties_lookup_property in libgtk_3_0 59# _gtk_border_get_type in libgtk_3_0 60# _gtk_widget_get_allocated_baseline in libgtk_3_0 61# _gtk_container_propagate_draw in libgtk_3_0 62# _gtk_container_propagate_draw in libgtk_3_0 63# _gtk_entry_completion_get_inline_selection in libgtk_3_0 64# Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) in libgtkmm_3_0_1 65# Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) in libgtkmm_3_0_1 66# _gtk_widget_get_allocated_baseline in libgtk_3_0 67# _gtk_container_propagate_draw in libgtk_3_0 68# _gtk_container_propagate_draw in libgtk_3_0 69# _gtk_border_get_type in libgtk_3_0 70# _gtk_container_get_path_for_child in libgtk_3_0 71# _gtk_style_properties_lookup_property in libgtk_3_0 72# _gtk_border_get_type in libgtk_3_0 73# _gtk_widget_get_allocated_baseline in libgtk_3_0 74# _gtk_container_propagate_draw in libgtk_3_0 75# _gtk_container_propagate_draw in libgtk_3_0 76# Gtk::Widget::on_draw(Cairo::RefPtr<Cairo::Context> const&) in libgtkmm_3_0_1 77# Gtk::Widget_Class::draw_callback(_GtkWidget*, _cairo*) in libgtkmm_3_0_1 78# _gtk_widget_get_allocated_baseline in libgtk_3_0 79# _gtk_widget_get_action_group in libgtk_3_0 80# _gtk_main_do_event in libgtk_3_0 81# _gdk_event_free in libgdk_3_0 82# _gdk_window_get_display in libgdk_3_0 83# _gdk_cairo_create in libgdk_3_0 84# _gdk_cairo_create in libgdk_3_0 85# _g_closure_invoke in libgobject_2_0_0 86# _g_signal_emit_valist in libgobject_2_0_0 87# _g_signal_emit in libgobject_2_0_0 88# _gdk_frame_clock_get_refresh_info in libgdk_3_0 89# _gdk__private__ in libgdk_3_0 90# _g_source_get_time in libglib_2_0_0 91# _g_clear_list in libglib_2_0_0 92# _g_main_context_check in libglib_2_0_0 93# _g_main_context_iteration in libglib_2_0_0 94# _g_application_run in libgio_2_0_0 95# 0x00007FF75FCB37BB in inkscape 96# 0x00007FF75FCB12EE in inkscape 97# 0x00007FF75FCB13E6 in inkscape 98# _BaseThreadInitThunk in KERNEL32 99# _RtlUserThreadStart in ntdll </pre> <details><summary>System info</summary> Inkscape 1.3 (0e150ed6c4, 2023-07-21) GLib version: 2.76.4 GTK version: 3.24.38 glibmm version: 2.66.6 gtkmm version: 3.24.7 libxml2 version: 2.11.4 libxslt version: 1.1.38 Cairo version: 1.17.7 Pango version: 1.50.14 HarfBuzz version: 8.0.1 OS version: Windows 10 22H2 </details> ``` <!-- ❤️ 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