Nikolay Sivov : msxml3: Implement put_version() for MXWriter.

Alexandre Julliard julliard at winehq.org
Wed Aug 24 14:05:27 CDT 2011


Module: wine
Branch: master
Commit: 74a7edd41ba79881c0a54ebf93878d394674ef77
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=74a7edd41ba79881c0a54ebf93878d394674ef77

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Aug 24 13:25:29 2011 +0400

msxml3: 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();
 }




More information about the wine-cvs mailing list