X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=src%2Fhelper-fns.h;h=d2a6c9b22bc971d48e2efee119764ccaad0c2397;hb=530f7fc7cfa4351ec33163abd795460bbc351609;hp=9d3380bf2cee47a0cac4783ab62c1a3587ba5a06;hpb=490e904265822342aa97a56b1ad0d0bb398c89a7;p=inkscape.git diff --git a/src/helper-fns.h b/src/helper-fns.h index 9d3380bf2..d2a6c9b22 100644 --- a/src/helper-fns.h +++ b/src/helper-fns.h @@ -32,7 +32,10 @@ * is not known beforehand. For example, see sp_feColorMatrix_set in * sp-fecolormatrix.cpp */ inline double helperfns_read_number(gchar const *value, bool warning = true) { - if (!value) return 0; + if (!value) { + g_warning("Called helperfns_read_number with value==null_ptr, this can lead to unexpected behaviour."); + return 0; + } char *end; double ret = g_strtod(value, &end); if (*end) { @@ -94,24 +97,23 @@ inline std::vector helperfns_read_vector(const gchar* value, int size){ */ inline std::vector helperfns_read_vector(const gchar* value){ std::vector v; - std::istringstream is(value); - gdouble d; - std::string str; - is >> str; - while(str.size()) + gchar const* beg = value; + while(isspace(*beg)) beg++; + while(*beg) { char *end; - double ret = g_strtod(str.c_str(), &end); - if (*end){ - g_warning("helper-fns::helperfns_read_vector() Unable to convert \"%s\" to number", str.c_str()); + double ret = g_strtod(beg, &end); + if (end==beg){ + g_warning("helper-fns::helperfns_read_vector() Unable to convert \"%s\" to number", beg); // We could leave this out, too. If strtod can't convert // anything, it will return zero. ret = 0; } - v.push_back(d); + v.push_back(ret); - is >> str; + beg = end; + while(isspace(*beg)) beg++; } return v; }