[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    branches/KDE/3.5/kdewebdev/quanta
From:       Andras Mantia <amantia () kde ! org>
Date:       2006-09-09 14:29:14
Message-ID: 1157812154.304977.32265.nullmailer () svn ! kde ! org
[Download RAW message or body]

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];
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic