summaryrefslogtreecommitdiffstats
path: root/src/svg
diff options
context:
space:
mode:
authorJon A. Cruz <jon@joncruz.org>2009-09-27 04:19:01 +0000
committerjoncruz <joncruz@users.sourceforge.net>2009-09-27 04:19:01 +0000
commitc81c39a0cb321c8d3ac45aa460d77451f5340aea (patch)
tree2d4d38582a81c603ebd1e7701801ea63a7975520 /src/svg
parentfix build on win32 with LCMS_ENABLED (diff)
downloadinkscape-c81c39a0cb321c8d3ac45aa460d77451f5340aea.tar.gz
inkscape-c81c39a0cb321c8d3ac45aa460d77451f5340aea.zip
Updated allowed icc-profile names to match recent grammars. Follow-up for bug #405143
(bzr r8656)
Diffstat (limited to 'src/svg')
-rw-r--r--src/svg/svg-color-test.h2
-rw-r--r--src/svg/svg-color.cpp13
2 files changed, 12 insertions, 3 deletions
diff --git a/src/svg/svg-color-test.h b/src/svg/svg-color-test.h
index 49af63a5d..a540d4b1b 100644
--- a/src/svg/svg-color-test.h
+++ b/src/svg/svg-color-test.h
@@ -87,6 +87,8 @@ public:
{1, true, "positive", "icc-color(positive, +0.1)"},
{1, true, "negative", "icc-color(negative, -0.1)"},
{0, false, "", "icc-color(named, value)"},
+ {1, true, "hyphen-name", "icc-color(hyphen-name, 1)"},
+ {1, true, "under_name", "icc-color(under_name, 1)"},
};
for ( size_t i = 0; i < G_N_ELEMENTS(cases); i++ ) {
diff --git a/src/svg/svg-color.cpp b/src/svg/svg-color.cpp
index 9040d6e43..a8e24c311 100644
--- a/src/svg/svg-color.cpp
+++ b/src/svg/svg-color.cpp
@@ -454,7 +454,11 @@ sp_svg_create_color_hash()
return colors;
}
-
+/*
+ * Some discussion at http://markmail.org/message/bhfvdfptt25kgtmj
+ * Allowed ASCII first characters: ':', 'A'-'Z', '_', 'a'-'z'
+ * Allowed ASCII remaining chars add: '-', '.', '0'-'9',
+ */
bool sp_svg_read_icc_color( gchar const *str, gchar const **end_ptr, SVGICCColor* dest )
{
bool good = true;
@@ -484,11 +488,14 @@ bool sp_svg_read_icc_color( gchar const *str, gchar const **end_ptr, SVGICCColor
}
if ( !g_ascii_isalpha(*str)
- && ( !(0x080 & *str) ) ) {
+ && ( !(0x080 & *str) )
+ && (*str != '_')
+ && (*str != ':') ) {
// Name must start with a certain type of character
good = false;
} else {
- while ( g_ascii_isdigit(*str) || g_ascii_isalpha(*str) || (*str == '-') ) {
+ while ( g_ascii_isdigit(*str) || g_ascii_isalpha(*str)
+ || (*str == '-') || (*str == ':') || (*str == '_') || (*str == '.') ) {
if ( dest ) {
dest->colorProfile += *str;
}