summaryrefslogtreecommitdiffstats
path: root/src/uri-references.cpp
diff options
context:
space:
mode:
authorMarc Jeanmougin <marc@jeanmougin.fr>2015-11-19 21:15:59 +0000
committerMarc Jeanmougin <marcjeanmougin@free.fr>2015-11-19 21:15:59 +0000
commitf4ed6e3898b0e21cf131533bb9b4511ce82de86a (patch)
tree9364ace3c90a18cdf930e1e07f3b8977969729c2 /src/uri-references.cpp
parentTranslations. Turkish translation update. (diff)
downloadinkscape-f4ed6e3898b0e21cf131533bb9b4511ce82de86a.tar.gz
inkscape-f4ed6e3898b0e21cf131533bb9b4511ce82de86a.zip
fix for bug 1517740 (crash in some cases in selection sets)
Fixed bugs: - https://launchpad.net/bugs/1517740 (bzr r14478)
Diffstat (limited to 'src/uri-references.cpp')
-rw-r--r--src/uri-references.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/uri-references.cpp b/src/uri-references.cpp
index b6ccdbf5f..db46a156f 100644
--- a/src/uri-references.cpp
+++ b/src/uri-references.cpp
@@ -19,7 +19,7 @@
#include "uri.h"
#include "uri-references.h"
#include "extract-uri.h"
-
+#include "sp-tag-use.h"
#include <glibmm/miscutils.h>
#include <sigc++/functors/mem_fun.h>
@@ -84,7 +84,14 @@ bool URIReference::_acceptObject(SPObject *obj) const
positions.push_back(position);
owner = owner->parent;
}
- owner = ((SPUse *)owner)->get_original();
+ if (dynamic_cast<SPUse *>(owner))
+ owner = ((SPUse *)owner)->get_original();
+ else if (dynamic_cast<SPTagUse *>(owner))
+ owner = ((SPTagUse *)owner)->get_original();
+ else {
+ g_warning("cloned object with no known type\n");
+ return false;
+ }
for (int i = positions.size() - 2; i >= 0; i--)
owner = owner->childList(false)[positions[i]];
}