diff options
Diffstat (limited to 'src/live_effects/lpeobject-reference.cpp')
| -rw-r--r-- | src/live_effects/lpeobject-reference.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/live_effects/lpeobject-reference.cpp b/src/live_effects/lpeobject-reference.cpp index e96054212..1c04c909c 100644 --- a/src/live_effects/lpeobject-reference.cpp +++ b/src/live_effects/lpeobject-reference.cpp @@ -53,12 +53,14 @@ bool LPEObjectReference::_acceptObject(SPObject * const obj) const void LPEObjectReference::link(const char *to) { - if ( to == NULL ) { + if ( to && !to[0] ) { quit_listening(); unlink(); } else { if ( !lpeobject_href || ( strcmp(to, lpeobject_href) != 0 ) ) { - g_free(lpeobject_href); + if (lpeobject_href) { + g_free(lpeobject_href); + } lpeobject_href = g_strdup(to); try { attach(Inkscape::URI(to)); @@ -98,9 +100,6 @@ LPEObjectReference::start_listening(LivePathEffectObject* to) void LPEObjectReference::quit_listening(void) { - if ( lpeobject == NULL ) { - return; - } _modified_connection.disconnect(); _delete_connection.disconnect(); lpeobject_repr = NULL; @@ -122,16 +121,20 @@ lpeobjectreference_href_changed(SPObject */*old_ref*/, SPObject */*ref*/, LPEObj static void lpeobjectreference_delete_self(SPObject */*deleted*/, LPEObjectReference *lpeobjref) { - lpeobjref->quit_listening(); - lpeobjref->unlink(); - if (lpeobjref->user_unlink) - lpeobjref->user_unlink(lpeobjref, lpeobjref->owner); + lpeobjref->quit_listening(); + lpeobjref->unlink(); + if (lpeobjref->user_unlink) { + lpeobjref->user_unlink(lpeobjref, lpeobjref->owner); + } } static void lpeobjectreference_source_modified(SPObject */*iSource*/, guint /*flags*/, LPEObjectReference *lpeobjref) { - lpeobjref->owner->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + SPObject *owner_obj = lpeobjref->owner; + if (owner_obj) { + lpeobjref->owner->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); + } } } //namespace LivePathEffect |
