Module: wine Branch: master Commit: 272af8fa1eca695182384d8903b532c4a0f6b6f1 URL: http://source.winehq.org/git/wine.git/?a=commit;h=272af8fa1eca695182384d8903...
Author: Alexandre Julliard julliard@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++;