Code

Fix Bug #675309 - crash when unlinking an orphaned clone
authorAdonis Papaderos <ado.papas@yahoo.gr>
Thu, 25 Nov 2010 10:48:07 +0000 (12:48 +0200)
committerAdonis Papaderos <ado.papas@yahoo.gr>
Thu, 25 Nov 2010 10:48:07 +0000 (12:48 +0200)
src/selection-chemistry.cpp
src/sp-use.cpp

index 61db7f9610cbac5a5e5514f05151177ade4c1134..6786479d6230bda78540ff89461b2c80f323141e 100644 (file)
@@ -2150,6 +2150,11 @@ sp_selection_unlink(SPDesktop *desktop)
         SPItem *unlink;
         if (SP_IS_USE(item)) {
             unlink = sp_use_unlink(SP_USE(item));
+            // Unable to unlink use (external or invalid href?)
+            if (!unlink) {
+                new_select = g_slist_prepend(new_select, item);
+                continue;
+            }
         } else /*if (SP_IS_TREF(use))*/ {
             unlink = SP_ITEM(sp_tref_convert_to_tspan(item));
         }
index 9cd38e4b3e70b5ebf7e87734a2feb1073a8604c8..ecb7eb788b137c69537c43312d9950e96ce06518 100644 (file)
@@ -678,7 +678,7 @@ sp_use_unlink(SPUse *use)
 
     // Track the ultimate source of a chain of uses.
     SPItem *orig = sp_use_root(use);
-    g_return_val_if_fail(orig, NULL);
+    if (!orig) return NULL ;
 
     // Calculate the accumulated transform, starting from the original.
     Geom::Matrix t = sp_use_get_root_transform(use);