X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flengthcommon.cpp;h=c4fe515e093275a80996f10d4f6c2f2c55f3bb5d;hb=72af7f340ca8ee81c7e51633afbb3f9bd435356a;hp=217c22b6048c48e393d8ddfe8309c01ec49950d9;hpb=aafd52f44167d5510be1ddcb974daa9dae486933;p=lyx.git diff --git a/src/lengthcommon.cpp b/src/lengthcommon.cpp index 217c22b604..c4fe515e09 100644 --- a/src/lengthcommon.cpp +++ b/src/lengthcommon.cpp @@ -19,9 +19,6 @@ #include "support/lassert.h" #include "support/lstrings.h" -#include -#include - using namespace std; using namespace lyx::support; @@ -236,8 +233,11 @@ bool isValidGlueLength(string const & data, GlueLength * result) // forward approach leads to very long, tedious code that would be // much harder to understand and maintain. (AS) - if (data.empty()) + if (data.empty()) { + if (result) + *result = GlueLength(); return true; + } string buffer = ltrim(data); // To make isValidGlueLength recognize negative values as @@ -306,12 +306,13 @@ bool isValidLength(string const & data, Length * result) // The parser may seem overkill for lengths without // glue, but since we already have it, using it is // easier than writing something from scratch. - if (data.empty()) + if (data.empty()) { + if (result) + *result = Length(); return true; + } - string buffer = data; - int pattern_index = 0; - char pattern[3]; + string buffer = data; // To make isValidLength recognize negative values // this little hack is needed: @@ -339,19 +340,19 @@ bool isValidLength(string const & data, Length * result) int unit_index = 1; // entries at index 0 are sentinels // construct "pattern" from "data" + string pattern; while (!isEndOfData(buffer)) { - if (pattern_index > 2) + if (pattern.size() > 2) return false; - pattern[pattern_index] = nextToken(buffer, number, + char const token = nextToken(buffer, number, number_index, unit, unit_index); - if (pattern[pattern_index] == 'E') + if (token == 'E') return false; - ++pattern_index; + pattern += token; } - pattern[pattern_index] = '\0'; // only the most basic pattern is accepted here - if (strcmp(pattern, "nu") != 0) + if (pattern != "nu") return false; // It _was_ a correct length string.