Code

added fix from Dale Harvey to expand incomplete JIDs specified in user
[inkscape.git] / src / sp-object.cpp
index fd368dd613a0164915c70f0797dec0bb09f10f08..9068c4ba2ae0e0b2bdf19f6e65739df32077db58 100644 (file)
@@ -227,16 +227,16 @@ sp_object_finalize(GObject *object)
 
 namespace {
 
-Inkscape::Util::shared_ptr<char> stringify(SPObject *obj) {
+Inkscape::Util::ptr_shared<char> stringify(SPObject *obj) {
     char *temp=g_strdup_printf("%p", obj);
-    Inkscape::Util::shared_ptr<char> result=Inkscape::Util::share_string(temp);
+    Inkscape::Util::ptr_shared<char> result=Inkscape::Util::share_string(temp);
     g_free(temp);
     return result;
 }
 
-Inkscape::Util::shared_ptr<char> stringify(unsigned n) {
+Inkscape::Util::ptr_shared<char> stringify(unsigned n) {
     char *temp=g_strdup_printf("%u", n);
-    Inkscape::Util::shared_ptr<char> result=Inkscape::Util::share_string(temp);
+    Inkscape::Util::ptr_shared<char> result=Inkscape::Util::share_string(temp);
     g_free(temp);
     return result;
 }
@@ -252,7 +252,7 @@ public:
 
     static Category category() { return REFCOUNT; }
 
-    Inkscape::Util::shared_ptr<char> name() const {
+    Inkscape::Util::ptr_shared<char> name() const {
         if ( _type == REF) {
             return Inkscape::Util::share_static_string("sp-object-ref");
         } else {
@@ -272,7 +272,7 @@ public:
     }
 
 private:
-    Inkscape::Util::shared_ptr<char> _object;
+    Inkscape::Util::ptr_shared<char> _object;
     unsigned _refcount;
     Type _type;
 };
@@ -659,6 +659,8 @@ sp_object_detach(SPObject *parent, SPObject *object) {
     g_return_if_fail(SP_IS_OBJECT(object));
     g_return_if_fail(object->parent == parent);
 
+    sp_object_invoke_release(object);
+
     SPObject *prev=NULL;
     for ( SPObject *child = parent->children ; child && child != object ;
           child = child->next )
@@ -679,7 +681,6 @@ sp_object_detach(SPObject *parent, SPObject *object) {
     object->next = NULL;
     object->parent = NULL;
 
-    sp_object_invoke_release(object);
     parent->_updateTotalHRefCount(-object->_total_hrefcount);
     sp_object_unref(object, parent);
 }
@@ -870,9 +871,6 @@ sp_object_invoke_release(SPObject *object)
     g_assert(object != NULL);
     g_assert(SP_IS_OBJECT(object));
 
-    // we need to remember our parent
-    // g_assert(!object->parent);
-    g_assert(!object->next);
     g_assert(object->document);
     g_assert(object->repr);