diff options
| author | bulia byak <buliabyak@gmail.com> | 2008-09-20 23:46:21 +0000 |
|---|---|---|
| committer | buliabyak <buliabyak@users.sourceforge.net> | 2008-09-20 23:46:21 +0000 |
| commit | ba0ea3537ca1120390bcd845b2aa88f93d2b62b7 (patch) | |
| tree | 6fa5855f18b54248d838b4b0a2de71384e57d74c /src/sp-object.cpp | |
| parent | release reprs properly (diff) | |
| download | inkscape-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.cpp | 7 |
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; } |
