Module: wine Branch: master Commit: ba4fcecfa3779714a6f65f9af723bedb2826582e URL: http://source.winehq.org/git/wine.git/?a=commit;h=ba4fcecfa3779714a6f65f9af7...
Author: Nikolay Sivov nsivov@codeweavers.com Date: Thu Mar 24 12:05:39 2016 +0300
msxml3/mxwriter: Simplify argument check in externalEntityDecl().
Signed-off-by: Nikolay Sivov nsivov@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/msxml3/mxwriter.c | 4 +--- dlls/msxml3/tests/saxreader.c | 13 ++++++++++++- 2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/dlls/msxml3/mxwriter.c b/dlls/msxml3/mxwriter.c index d2d80a1..cc6c0b5 100644 --- a/dlls/msxml3/mxwriter.c +++ b/dlls/msxml3/mxwriter.c @@ -1679,9 +1679,7 @@ static HRESULT WINAPI SAXDeclHandler_externalEntityDecl(ISAXDeclHandler *iface, TRACE("(%p)->(%s:%d %s:%d %s:%d)\n", This, debugstr_wn(name, n_name), n_name, debugstr_wn(publicId, n_publicId), n_publicId, debugstr_wn(systemId, n_systemId), n_systemId);
- if (!name) return E_INVALIDARG; - if (publicId && !systemId) return E_INVALIDARG; - if (!publicId && !systemId) return E_INVALIDARG; + if (!name || !systemId) return E_INVALIDARG;
write_output_buffer(This, entityW, sizeof(entityW)/sizeof(WCHAR)); if (n_name) { diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c index 9c8d103..1b83a4e 100644 --- a/dlls/msxml3/tests/saxreader.c +++ b/dlls/msxml3/tests/saxreader.c @@ -4996,11 +4996,22 @@ static void test_mxwriter_dtd(void) _bstr_("sysid"), strlen("sysid")); ok(hr == S_OK, "got 0x%08x\n", hr);
+ hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), strlen("name"), NULL, 0, _bstr_("sysid"), strlen("sysid")); + ok(hr == S_OK, "got 0x%08x\n", hr); + + hr = ISAXDeclHandler_externalEntityDecl(decl, _bstr_("name"), strlen("name"), _bstr_("pubid"), strlen("pubid"), + NULL, 0); + ok(hr == E_INVALIDARG, "got 0x%08x\n", hr); + V_VT(&dest) = VT_EMPTY; hr = IMXWriter_get_output(writer, &dest); ok(hr == S_OK, "got 0x%08x\n", hr); ok(V_VT(&dest) == VT_BSTR, "got %d\n", V_VT(&dest)); - ok(!lstrcmpW(_bstr_("<!ENTITY name PUBLIC \"pubid\" \"sysid\">\r\n"), V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + ok(!lstrcmpW(_bstr_( + "<!ENTITY name PUBLIC \"pubid\" \"sysid\">\r\n" + "<!ENTITY name SYSTEM \"sysid\">\r\n"), + V_BSTR(&dest)), "got wrong content %s\n", wine_dbgstr_w(V_BSTR(&dest))); + VariantClear(&dest);
ISAXContentHandler_Release(content);