summaryrefslogtreecommitdiffstats
path: root/src/document.cpp
diff options
context:
space:
mode:
authorMartin Owens <doctormo@gmail.com>2014-01-22 19:58:15 +0000
committerMartin Owens <doctormo@gmail.com>2014-01-22 19:58:15 +0000
commit9a0c54cb8bc9b0bfc0c6af95f4b156fd717179a8 (patch)
tree18809c1bfa21ea2ab6e319a3308dc2d3010a3bd7 /src/document.cpp
parentImprove use tag logic by recording the loaded documents in a list. (diff)
downloadinkscape-9a0c54cb8bc9b0bfc0c6af95f4b156fd717179a8.tar.gz
inkscape-9a0c54cb8bc9b0bfc0c6af95f4b156fd717179a8.zip
Protect against infinate looping of new included hrefs
(bzr r12970)
Diffstat (limited to 'src/document.cpp')
-rw-r--r--src/document.cpp10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/document.cpp b/src/document.cpp
index 32a025e87..90f35307d 100644
--- a/src/document.cpp
+++ b/src/document.cpp
@@ -315,7 +315,8 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc,
gchar const *uri,
gchar const *base,
gchar const *name,
- unsigned int keepalive)
+ unsigned int keepalive,
+ SPDocument *parent)
{
SPDocument *document = new SPDocument();
@@ -326,6 +327,7 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc,
document->rdoc = rdoc;
document->rroot = rroot;
+ document->parent_document = parent;
if (document->uri){
g_free(document->uri);
@@ -474,7 +476,7 @@ SPDocument *SPDocument::createDoc(Inkscape::XML::Document *rdoc,
* Fetches document from URI, or creates new, if NULL; public document
* appears in document list.
*/
-SPDocument *SPDocument::createNewDoc(gchar const *uri, unsigned int keepalive, bool make_new)
+SPDocument *SPDocument::createNewDoc(gchar const *uri, unsigned int keepalive, bool make_new, SPDocument *parent)
{
SPDocument *doc;
Inkscape::XML::Document *rdoc;
@@ -519,7 +521,7 @@ SPDocument *SPDocument::createNewDoc(gchar const *uri, unsigned int keepalive, b
//# These should be set by now
g_assert(name);
- doc = createDoc(rdoc, uri, base, name, keepalive);
+ doc = createDoc(rdoc, uri, base, name, keepalive, parent);
g_free(base);
g_free(name);
@@ -540,7 +542,7 @@ SPDocument *SPDocument::createNewDocFromMem(gchar const *buffer, gint length, un
// TODO fixme: destroy document
} else {
Glib::ustring name = Glib::ustring::compose( _("Memory document %1"), ++doc_mem_count );
- doc = createDoc(rdoc, NULL, NULL, name.c_str(), keepalive);
+ doc = createDoc(rdoc, NULL, NULL, name.c_str(), keepalive, NULL);
}
}