Nikolay Sivov : xmllite: Fix equal sign parsing.
Alexandre Julliard
julliard at winehq.org
Wed Nov 28 14:14:05 CST 2012
Module: wine
Branch: master
Commit: c23ce5976ee8cb96c996bda0b49b710ef15646ce
URL: http://source.winehq.org/git/wine.git/?a=commit;h=c23ce5976ee8cb96c996bda0b49b710ef15646ce
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed Nov 28 09:44:06 2012 -0500
xmllite: Fix equal sign parsing.
---
dlls/xmllite/reader.c | 29 +++++++++++++++++++----------
1 files changed, 19 insertions(+), 10 deletions(-)
diff --git a/dlls/xmllite/reader.c b/dlls/xmllite/reader.c
index ee6a4d7..11b5eb8 100644
--- a/dlls/xmllite/reader.c
+++ b/dlls/xmllite/reader.c
@@ -48,7 +48,6 @@ static const WCHAR utf8W[] = {'U','T','F','-','8',0};
static const WCHAR dblquoteW[] = {'\"',0};
static const WCHAR quoteW[] = {'\'',0};
-static const WCHAR eqW[] = {'=',0};
struct xml_encoding_data
{
@@ -515,6 +514,18 @@ static HRESULT reader_parse_versionnum(xmlreader *reader)
return S_OK;
}
+/* [25] Eq ::= S? '=' S? */
+static HRESULT reader_parse_eq(xmlreader *reader)
+{
+ static const WCHAR eqW[] = {'=',0};
+ reader_skipspaces(reader);
+ if (reader_cmp(reader, eqW)) return WC_E_EQUAL;
+ /* skip '=' */
+ reader_skipn(reader, 1);
+ reader_skipspaces(reader);
+ return S_OK;
+}
+
/* [24] VersionInfo ::= S 'version' Eq ("'" VersionNum "'" | '"' VersionNum '"') */
static HRESULT reader_parse_versioninfo(xmlreader *reader)
{
@@ -527,9 +538,8 @@ static HRESULT reader_parse_versioninfo(xmlreader *reader)
/* skip 'version' */
reader_skipn(reader, 7);
- if (reader_cmp(reader, eqW)) return WC_E_EQUAL;
- /* skip '=' */
- reader_skipn(reader, 1);
+ hr = reader_parse_eq(reader);
+ if (FAILED(hr)) return hr;
if (reader_cmp(reader, quoteW) && reader_cmp(reader, dblquoteW))
return WC_E_QUOTE;
@@ -596,9 +606,8 @@ static HRESULT reader_parse_encdecl(xmlreader *reader)
/* skip 'encoding' */
reader_skipn(reader, 8);
- if (reader_cmp(reader, eqW)) return WC_E_EQUAL;
- /* skip '=' */
- reader_skipn(reader, 1);
+ hr = reader_parse_eq(reader);
+ if (FAILED(hr)) return hr;
if (reader_cmp(reader, quoteW) && reader_cmp(reader, dblquoteW))
return WC_E_QUOTE;
@@ -624,6 +633,7 @@ static HRESULT reader_parse_sddecl(xmlreader *reader)
static const WCHAR yesW[] = {'y','e','s',0};
static const WCHAR noW[] = {'n','o',0};
const WCHAR *start, *ptr;
+ HRESULT hr;
if (!reader_skipspaces(reader)) return WC_E_WHITESPACE;
@@ -631,9 +641,8 @@ static HRESULT reader_parse_sddecl(xmlreader *reader)
/* skip 'standalone' */
reader_skipn(reader, 10);
- if (reader_cmp(reader, eqW)) return WC_E_EQUAL;
- /* skip '=' */
- reader_skipn(reader, 1);
+ hr = reader_parse_eq(reader);
+ if (FAILED(hr)) return hr;
if (reader_cmp(reader, quoteW) && reader_cmp(reader, dblquoteW))
return WC_E_QUOTE;
More information about the wine-cvs
mailing list