Nikolay Sivov : wbemprox: Implement context object cloning.

Alexandre Julliard julliard at winehq.org
Wed Mar 3 15:47:28 CST 2021


Module: wine
Branch: master
Commit: 1be967df936b831018841119500aaa5fe546c49b
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=1be967df936b831018841119500aaa5fe546c49b

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Wed Mar  3 09:05:49 2021 +0300

wbemprox: Implement context object cloning.

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/wbemprox/services.c | 27 +++++++++++++++++++++++++--
 1 file changed, 25 insertions(+), 2 deletions(-)

diff --git a/dlls/wbemprox/services.c b/dlls/wbemprox/services.c
index 19e03fa152b..7de97dbae64 100644
--- a/dlls/wbemprox/services.c
+++ b/dlls/wbemprox/services.c
@@ -1039,9 +1039,32 @@ static HRESULT WINAPI wbem_context_Clone(
     IWbemContext *iface,
     IWbemContext **newcopy )
 {
-    FIXME("%p, %p\n", iface, newcopy);
+    struct wbem_context *context = impl_from_IWbemContext( iface );
+    struct wbem_context_value *value;
+    IWbemContext *cloned_context;
+    HRESULT hr;
 
-    return E_NOTIMPL;
+    TRACE("%p, %p\n", iface, newcopy);
+
+    if (SUCCEEDED(hr = WbemContext_create( (void **)&cloned_context )))
+    {
+        LIST_FOR_EACH_ENTRY( value, &context->values, struct wbem_context_value, entry )
+        {
+            if (FAILED(hr = IWbemContext_SetValue( cloned_context, value->name, 0, &value->value ))) break;
+        }
+    }
+
+    if (SUCCEEDED(hr))
+    {
+        *newcopy = cloned_context;
+    }
+    else
+    {
+        *newcopy = NULL;
+        IWbemContext_Release( cloned_context );
+    }
+
+    return hr;
 }
 
 static HRESULT WINAPI wbem_context_GetNames(




More information about the wine-cvs mailing list