summaryrefslogtreecommitdiffstats
path: root/src/sp-object.cpp
diff options
context:
space:
mode:
authorbulia byak <buliabyak@gmail.com>2008-09-20 23:46:21 +0000
committerbuliabyak <buliabyak@users.sourceforge.net>2008-09-20 23:46:21 +0000
commitba0ea3537ca1120390bcd845b2aa88f93d2b62b7 (patch)
tree6fa5855f18b54248d838b4b0a2de71384e57d74c /src/sp-object.cpp
parentrelease reprs properly (diff)
downloadinkscape-ba0ea3537ca1120390bcd845b2aa88f93d2b62b7.tar.gz
inkscape-ba0ea3537ca1120390bcd845b2aa88f93d2b62b7.zip
fix overreffing of reprs by clones: only ref a repr by a non-cloned SPObject
(bzr r6856)
Diffstat (limited to 'src/sp-object.cpp')
-rw-r--r--src/sp-object.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/sp-object.cpp b/src/sp-object.cpp
index 83bb7282c..0153fedc2 100644
--- a/src/sp-object.cpp
+++ b/src/sp-object.cpp
@@ -817,7 +817,8 @@ sp_object_invoke_build(SPObject *object, SPDocument *document, Inkscape::XML::No
object->document = document;
object->repr = repr;
- Inkscape::GC::anchor(repr);
+ if (!cloned)
+ Inkscape::GC::anchor(repr);
object->cloned = cloned;
if (!SP_OBJECT_IS_CLONED(object)) {
@@ -885,6 +886,8 @@ void SPObject::releaseReferences() {
this->_default_label = NULL;
this->document->bindObjectToRepr(this->repr, NULL);
+
+ Inkscape::GC::release(this->repr);
} else {
g_assert(!this->id);
}
@@ -893,8 +896,6 @@ void SPObject::releaseReferences() {
this->style = sp_style_unref(this->style);
}
- Inkscape::GC::release(this->repr);
-
this->document = NULL;
this->repr = NULL;
}