From kde-commits Sat Sep 09 14:29:14 2006 From: Andras Mantia Date: Sat, 09 Sep 2006 14:29:14 +0000 To: kde-commits Subject: branches/KDE/3.5/kdewebdev/quanta Message-Id: <1157812154.304977.32265.nullmailer () svn ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=115781217222056 SVN commit 582484 by amantia: Handle correctly the escaped backslashes inside strings. BUG: 128819 M +1 -0 ChangeLog M +13 -3 parsers/saparser.cpp M +32 -6 utility/quantacommon.cpp --- branches/KDE/3.5/kdewebdev/quanta/ChangeLog #582483:582484 @@ -19,6 +19,7 @@ - really abort if a remote directory cannot be created [#117032] - fix automatic updating of closing tags [#132357] - accept float numbers for length values [#130295] + - handle correctly the escaped backslashes inside strings [] - improvements: - make CSS completion work inside style attributes [#80605] --- branches/KDE/3.5/kdewebdev/quanta/parsers/saparser.cpp #582483:582484 @@ -490,10 +490,20 @@ p = s_textLine.find(s_currentContext.startString, p); if (p != -1) { - if (p == 0 || (p > 0 && s_textLine[p-1] != '\\')) + if (p >= 0) { - pos = p; - break; + int i = p - 1; + int slahNum = 0; + while (i > 0 && s_textLine[i] == '\\') + { + slahNum++; + i--; + } + if (p == 0 || (slahNum % 2 == 0)) + { + pos = p; + break; + } } } else break; --- branches/KDE/3.5/kdewebdev/quanta/utility/quantacommon.cpp #582483:582484 @@ -468,9 +468,22 @@ s = dtd->commentsStartRx.cap(); if (s == "\\\"" || s == "\\'") { - str[pos] = space; - str[pos+1] = space; - pos += 2; + int i = pos; + int slahNum = 0; + while (i > 0 && str[i] == '\\') + { + slahNum++; + i--; + } + if (slahNum % 2 == 0) + { + pos++; + } else + { + str[pos] = space; + str[pos+1] = space; + pos += 2; + } } else { s = dtd->comments[s]; @@ -521,9 +534,22 @@ s = dtd->commentsStartRx.cap(); if (s == "\\\"" || s == "\\'") { - str[pos] = space; - str[pos+1] = space; - pos += 2; + int i = pos; + int slahNum = 0; + while (i > 0 && str[i] == '\\') + { + slahNum++; + i--; + } + if (slahNum % 2 == 0) + { + pos++; + } else + { + str[pos] = space; + str[pos+1] = space; + pos += 2; + } } else { s = dtd->comments[s];