[1/3] msxml3/mxwriter: Implement put_version() for MXWriter

Nikolay Sivov nsivov at codeweavers.com
Wed Aug 24 07:37:26 CDT 2011


Implement put_version() for MXWriter
-------------- next part --------------
From cc0615b271b1137bb10f9a22942bcd6d3dd3c87e Mon Sep 17 00:00:00 2001
From: Nikolay Sivov <nsivov at codeweavers.com>
Date: Wed, 24 Aug 2011 13:25:29 +0400
Subject: [PATCH 1/3] Implement put_version() for MXWriter

---
 dlls/msxml3/mxwriter.c        |   13 ++++++++++---
 dlls/msxml3/tests/saxreader.c |   28 ++++++++++++++++++++++++++++
 2 files changed, 38 insertions(+), 3 deletions(-)

diff --git a/dlls/msxml3/mxwriter.c b/dlls/msxml3/mxwriter.c
index b99366e..54b7758 100644
--- a/dlls/msxml3/mxwriter.c
+++ b/dlls/msxml3/mxwriter.c
@@ -1,7 +1,7 @@
 /*
  *    MXWriter implementation
  *
- * Copyright 2011 Nikolay Sivov for CodeWeaversы
+ * Copyright 2011 Nikolay Sivov for CodeWeavers
  * Copyright 2011 Thomas Mullaly
  *
  * This library is free software; you can redistribute it and/or
@@ -525,8 +525,15 @@ static HRESULT WINAPI mxwriter_get_omitXMLDeclaration(IMXWriter *iface, VARIANT_
 static HRESULT WINAPI mxwriter_put_version(IMXWriter *iface, BSTR version)
 {
     mxwriter *This = impl_from_IMXWriter( iface );
-    FIXME("(%p)->(%s)\n", This, debugstr_w(version));
-    return E_NOTIMPL;
+
+    TRACE("(%p)->(%s)\n", This, debugstr_w(version));
+
+    if (!version) return E_INVALIDARG;
+
+    SysFreeString(This->version);
+    This->version = SysAllocString(version);
+
+    return S_OK;
 }
 
 static HRESULT WINAPI mxwriter_get_version(IMXWriter *iface, BSTR *version)
diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c
index 53ce8dc..cc123ff 100644
--- a/dlls/msxml3/tests/saxreader.c
+++ b/dlls/msxml3/tests/saxreader.c
@@ -1191,6 +1191,34 @@ static void test_mxwriter_properties(void)
     ok(!lstrcmpW(str, _bstr_("1.0")), "got %s\n", wine_dbgstr_w(str));
     SysFreeString(str);
 
+    /* store version string as is */
+    hr = IMXWriter_put_version(writer, NULL);
+    ok(hr == E_INVALIDARG, "got %08x\n", hr);
+
+    hr = IMXWriter_put_version(writer, _bstr_("1.0"));
+    ok(hr == S_OK, "got %08x\n", hr);
+
+    hr = IMXWriter_put_version(writer, _bstr_(""));
+    ok(hr == S_OK, "got %08x\n", hr);
+    hr = IMXWriter_get_version(writer, &str);
+    ok(hr == S_OK, "got %08x\n", hr);
+    ok(!lstrcmpW(str, _bstr_("")), "got %s\n", wine_dbgstr_w(str));
+    SysFreeString(str);
+
+    hr = IMXWriter_put_version(writer, _bstr_("a.b"));
+    ok(hr == S_OK, "got %08x\n", hr);
+    hr = IMXWriter_get_version(writer, &str);
+    ok(hr == S_OK, "got %08x\n", hr);
+    ok(!lstrcmpW(str, _bstr_("a.b")), "got %s\n", wine_dbgstr_w(str));
+    SysFreeString(str);
+
+    hr = IMXWriter_put_version(writer, _bstr_("2.0"));
+    ok(hr == S_OK, "got %08x\n", hr);
+    hr = IMXWriter_get_version(writer, &str);
+    ok(hr == S_OK, "got %08x\n", hr);
+    ok(!lstrcmpW(str, _bstr_("2.0")), "got %s\n", wine_dbgstr_w(str));
+    SysFreeString(str);
+
     IMXWriter_Release(writer);
     free_bstrs();
 }
-- 
1.5.6.5




More information about the wine-patches mailing list