[PATCH 2/4] msxml3/mxwriter: Simplify argument check in externalEntityDecl()

Nikolay Sivov nsivov at codeweavers.com
Thu Mar 24 04:05:39 CDT 2016


Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
---
 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);
-- 
2.8.0.rc3




More information about the wine-patches mailing list