summaryrefslogtreecommitdiffstats
path: root/src/version.cpp
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2016-06-08 08:27:17 +0000
committertavmjong-free <tavmjong@free.fr>2016-06-08 08:27:17 +0000
commit2546a959c920d3df18271f9a9aed42bf574df3c1 (patch)
tree71ec6566a59dd516f98f3017e8ebfc20664b50e5 /src/version.cpp
parentTranslations. PO template update. (diff)
downloadinkscape-2546a959c920d3df18271f9a9aed42bf574df3c1.tar.gz
inkscape-2546a959c920d3df18271f9a9aed42bf574df3c1.zip
Store rest of string in Inkscape version ('pre' 'devel').
Fix try/catch blocks by really throwing errors. (stringstream doesn't throw errors by default.) (bzr r14962)
Diffstat (limited to 'src/version.cpp')
-rw-r--r--src/version.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/version.cpp b/src/version.cpp
index abe855ee7..7610cd8e7 100644
--- a/src/version.cpp
+++ b/src/version.cpp
@@ -21,28 +21,36 @@ bool sp_version_from_string(const char *string, Inkscape::Version *version)
if (!string) {
return false;
}
-
+
try
{
std::stringstream ss;
+
+ // Throw exception if error.
+ ss.exceptions(std::ios::failbit | std::ios::badbit);
ss << string;
ss >> version->_major;
char tmp=0;
ss >> tmp;
ss >>version->_minor;
+
+ // Don't throw exception if failbit gets set (empty string OK).
+ ss.exceptions(std::ios::goodbit);
+ getline(ss, version->_tail);
return true;
}
catch(...)
{
version->_major = 0;
version->_minor = 0;
+ version->_tail.clear();
return false;
}
}
char *sp_version_to_string(Inkscape::Version version)
{
- return g_strdup_printf("%u.%u", version._major, version._minor);
+ return g_strdup_printf("%u.%u%s", version._major, version._minor, version._tail.c_str());
}
bool sp_version_inside_range(Inkscape::Version version,