diff options
| author | Eduard Braun <eduard.braun2@gmx.de> | 2016-02-14 17:35:49 +0000 |
|---|---|---|
| committer | Eduard Braun <eduard.braun2@gmx.de> | 2016-02-14 17:35:49 +0000 |
| commit | 50addf8b79d80608e9a37999861f55a20cdf19ae (patch) | |
| tree | 47c1f6d3aeffcfc2485ff87e8d86551598c22ef1 /src/extension/internal/cdr-input.cpp | |
| parent | Translations: Update inkscape.pot file (diff) | |
| download | inkscape-50addf8b79d80608e9a37999861f55a20cdf19ae.tar.gz inkscape-50addf8b79d80608e9a37999861f55a20cdf19ae.zip | |
Fix for bug 1478168 (CDR import crashes)
Fixed bugs:
- https://launchpad.net/bugs/1478168
(bzr r14650)
Diffstat (limited to 'src/extension/internal/cdr-input.cpp')
| -rw-r--r-- | src/extension/internal/cdr-input.cpp | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/src/extension/internal/cdr-input.cpp b/src/extension/internal/cdr-input.cpp index f4789a08f..c8df804bc 100644 --- a/src/extension/internal/cdr-input.cpp +++ b/src/extension/internal/cdr-input.cpp @@ -22,6 +22,7 @@ #include <string> #include <cstring> +#include <glibmm/regex.h> #include <libcdr/libcdr.h> @@ -281,7 +282,12 @@ SPDocument *CdrInput::open(Inkscape::Extension::Input * /*mod*/, const gchar * u } } - SPDocument * doc = SPDocument::createNewDocFromMem(tmpSVGOutput[page_num-1].cstr(), strlen(tmpSVGOutput[page_num-1].cstr()), TRUE); + // remove consecutive closepath commands (see bug 1492153) + Glib::RefPtr<Glib::Regex> regex = Glib::Regex::create("(Z(?:[\n\s]+Z)+)(?=[^<]+\")"); + Glib::ustring outString1 = Glib::ustring(tmpSVGOutput[page_num-1].cstr()); + Glib::ustring outString2 = regex->replace(outString1, 0, "Z", Glib::REGEX_MATCH_NEWLINE_ANY); + + SPDocument * doc = SPDocument::createNewDocFromMem(outString2.c_str(), outString2.bytes(), TRUE); // Set viewBox if it doesn't exist if (doc && !doc->getRoot()->viewBox_set) { |
