Nikolay Sivov : msxml3: Fix attributes formatting.
Alexandre Julliard
julliard at winehq.org
Fri Aug 26 10:40:49 CDT 2011
Module: wine
Branch: master
Commit: 897b77ce05353b528bb98cfd7790df0f88391d6e
URL: http://source.winehq.org/git/wine.git/?a=commit;h=897b77ce05353b528bb98cfd7790df0f88391d6e
Author: Nikolay Sivov <nsivov at codeweavers.com>
Date: Fri Aug 26 00:28:23 2011 +0400
msxml3: Fix attributes formatting.
---
dlls/msxml3/mxwriter.c | 5 +++--
dlls/msxml3/tests/saxreader.c | 14 +++++++++-----
2 files changed, 12 insertions(+), 7 deletions(-)
diff --git a/dlls/msxml3/mxwriter.c b/dlls/msxml3/mxwriter.c
index 843ea4a..fd6681d 100644
--- a/dlls/msxml3/mxwriter.c
+++ b/dlls/msxml3/mxwriter.c
@@ -754,8 +754,6 @@ static HRESULT WINAPI mxwriter_saxcontent_startElement(
hr = ISAXAttributes_getLength(attr, &length);
if (FAILED(hr)) return hr;
- if (length) xmlOutputBufferWriteString(This->buffer, " ");
-
for (i = 0; i < length; i++)
{
const WCHAR *str;
@@ -764,6 +762,9 @@ static HRESULT WINAPI mxwriter_saxcontent_startElement(
hr = ISAXAttributes_getQName(attr, i, &str, &len);
if (FAILED(hr)) return hr;
+ /* space separator in front of every attribute */
+ xmlOutputBufferWriteString(This->buffer, " ");
+
s = xmlchar_from_wchar(str);
xmlOutputBufferWriteString(This->buffer, (char*)s);
heap_free(s);
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
index 74fd9c7..e72c4a9 100644
--- a/dlls/msxml3/tests/saxreader.c
+++ b/dlls/msxml3/tests/saxreader.c
@@ -1394,6 +1394,7 @@ struct writer_startendelement_t {
const char *qname;
const char *output;
HRESULT hr;
+ ISAXAttributes *attr;
};
static const struct writer_startendelement_t writer_startendelement[] = {
@@ -1475,6 +1476,13 @@ static const struct writer_startendelement_t writer_startendelement[] = {
{ &CLSID_MXXMLWriter30, EndElement, "uri", "local", "uri:local2", "</uri:local2>", S_OK },
{ &CLSID_MXXMLWriter40, EndElement, "uri", "local", "uri:local2", "</uri:local2>", S_OK },
{ &CLSID_MXXMLWriter60, EndElement, "uri", "local", "uri:local2", "</uri:local2>", S_OK },
+
+ /* with attributes */
+ { &CLSID_MXXMLWriter, StartElement, "uri", "local", "uri:local", "<uri:local a:attr1=\"a1\" attr2=\"a2\">", S_OK, &saxattributes },
+ /* 65 */
+ { &CLSID_MXXMLWriter30, StartElement, "uri", "local", "uri:local", "<uri:local a:attr1=\"a1\" attr2=\"a2\">", S_OK, &saxattributes },
+ { &CLSID_MXXMLWriter40, StartElement, "uri", "local", "uri:local", "<uri:local a:attr1=\"a1\" attr2=\"a2\">", S_OK, &saxattributes },
+ { &CLSID_MXXMLWriter60, StartElement, "uri", "local", "uri:local", "<uri:local a:attr1=\"a1\" attr2=\"a2\">", S_OK, &saxattributes },
{ NULL }
};
@@ -1557,7 +1565,7 @@ static void test_mxwriter_startendelement_batch(const struct writer_startendelem
if (table->type == StartElement)
hr = ISAXContentHandler_startElement(content, _bstr_(table->uri), lstrlen(table->uri),
- _bstr_(table->local_name), lstrlen(table->local_name), _bstr_(table->qname), lstrlen(table->qname), NULL);
+ _bstr_(table->local_name), lstrlen(table->local_name), _bstr_(table->qname), lstrlen(table->qname), table->attr);
else
hr = ISAXContentHandler_endElement(content, _bstr_(table->uri), lstrlen(table->uri),
_bstr_(table->local_name), lstrlen(table->local_name), _bstr_(table->qname), lstrlen(table->qname));
@@ -1676,10 +1684,6 @@ static void test_mxwriter_startendelement(void)
todo_wine ok(!lstrcmpW(_bstr_("<><b></b><nspace:c/></a>"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest)));
VariantClear(&dest);
- /* try with attributes */
- hr = ISAXContentHandler_startElement(content, _bstr_(""), 0, _bstr_(""), 0, _bstr_("b"), 1, &saxattributes);
- ok(hr == S_OK, "got %08x\n", hr);
-
hr = ISAXContentHandler_endDocument(content);
ok(hr == S_OK, "got %08x\n", hr);
More information about the wine-cvs
mailing list