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