summaryrefslogtreecommitdiffstats
path: root/src/object/uri-references.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/object/uri-references.cpp')
-rw-r--r--src/object/uri-references.cpp12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/object/uri-references.cpp b/src/object/uri-references.cpp
index 35c1d7e17..b257eecef 100644
--- a/src/object/uri-references.cpp
+++ b/src/object/uri-references.cpp
@@ -47,7 +47,10 @@ URIReference::URIReference(SPDocument *owner_document)
g_assert(_owner_document != nullptr);
}
-URIReference::~URIReference() { detach(); }
+URIReference::~URIReference()
+{
+ detach();
+}
/*
* The main ideas here are:
@@ -106,8 +109,6 @@ bool URIReference::_acceptObject(SPObject *obj) const
return true;
}
-
-
void URIReference::attach(const URI &uri)
{
SPDocument *document = nullptr;
@@ -188,7 +189,6 @@ void URIReference::attach(const URI &uri)
_setObject(document->getObjectById(id));
_connection = document->connectIdChanged(id, sigc::mem_fun(*this, &URIReference::_setObject));
-
g_free(id);
}
@@ -213,12 +213,12 @@ void URIReference::_setObject(SPObject *obj)
_obj = obj;
_release_connection.disconnect();
- if (_obj) {
+ if (_obj && (!_owner || !_owner->cloned)) {
_obj->hrefObject(_owner);
_release_connection = _obj->connectRelease(sigc::mem_fun(*this, &URIReference::_release));
}
_changed_signal.emit(old_obj, _obj);
- if (old_obj) {
+ if (old_obj && (!_owner || !_owner->cloned)) {
/* release the old object _after_ the signal emission */
old_obj->unhrefObject(_owner);
}