Alexandre Julliard : ntdll: Skip xml comments in manifests.

Alexandre Julliard julliard at wine.codeweavers.com
Fri Jul 20 06:02:14 CDT 2007


Module: wine
Branch: master
Commit: 272af8fa1eca695182384d8903b532c4a0f6b6f1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=272af8fa1eca695182384d8903b532c4a0f6b6f1

Author: Alexandre Julliard <julliard at winehq.org>
Date:   Thu Jul 19 18:10:45 2007 +0200

ntdll: Skip xml comments in manifests.

---

 dlls/ntdll/actctx.c |   27 ++++++++++++++++++++++-----
 1 files changed, 22 insertions(+), 5 deletions(-)

diff --git a/dlls/ntdll/actctx.c b/dlls/ntdll/actctx.c
index b819dc1..26bdf31 100644
--- a/dlls/ntdll/actctx.c
+++ b/dlls/ntdll/actctx.c
@@ -541,14 +541,31 @@ static BOOL next_xml_elem(xmlbuf_t* xmlbuf, xmlstr_t* elem)
 {
     const char* ptr;
 
-    ptr = memchr(xmlbuf->ptr, '<', xmlbuf->end - xmlbuf->ptr);
-    if (!ptr)
+    for (;;)
     {
-        xmlbuf->ptr = xmlbuf->end;
-        return FALSE;
+        ptr = memchr(xmlbuf->ptr, '<', xmlbuf->end - xmlbuf->ptr);
+        if (!ptr)
+        {
+            xmlbuf->ptr = xmlbuf->end;
+            return FALSE;
+        }
+        ptr++;
+        if (ptr + 3 < xmlbuf->end && !strncmp( ptr, "!--", 3 )) /* skip comment */
+        {
+            for (ptr += 3; ptr + 3 <= xmlbuf->end; ptr++)
+                if (ptr[0] == '-' && ptr[1] == '-' && ptr[2] == '>') break;
+
+            if (ptr + 3 > xmlbuf->end)
+            {
+                xmlbuf->ptr = xmlbuf->end;
+                return FALSE;
+            }
+            xmlbuf->ptr = ptr + 3;
+        }
+        else break;
     }
 
-    xmlbuf->ptr = ++ptr;
+    xmlbuf->ptr = ptr;
     while (ptr < xmlbuf->end && !isxmlspace(*ptr) && *ptr != '>')
         ptr++;
 




More information about the wine-cvs mailing list