[2/6] wsdapi: Add code to create SOAP envelope from header and body elements.

Vincent Povirk madewokherd at gmail.com
Fri Jul 28 15:00:12 CDT 2017


+    wideStringLength = lstrlenW(wideString);
+    sizeNeeded = WideCharToMultiByte(CP_UTF8, 0, wideString,
wideStringLength, NULL, 0, NULL, NULL);
+
+    if (sizeNeeded < 0)
+    {
+        return NULL;
+    }
+
+    newString = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, sizeNeeded + 1);
+    WideCharToMultiByte(CP_UTF8, 0, wideString, wideStringLength,
newString, sizeNeeded, NULL, NULL);

This would be much simpler if you passed in -1 as the wide string
length. Using HEAP_ZERO_MEMORY to null-terminate the string is a bit
weird.

+        else if (curNode->Type == TextType)
+        {
+            textNode = WSDAllocateLinkedMemory(parent, sizeof(WSDXML_TEXT));
+            if (textNode == NULL) goto cleanup;
+
+            textNode->Node.Next = NULL;
+            textNode->Node.Parent = parent;
+            textNode->Node.Type = TextType;
+            textNode->Text = duplicate_string(textNode, ((WSDXML_TEXT
*)curNode)->Text);
+            if (textNode->Text == NULL) goto cleanup;
+        }

I'm not sure, but I think you need to add textNode as a child of newElement?

+    /* SequenceID attribute */
+    if (header->AppSequence->SequenceId != NULL)
+    {
+        if (!add_string_attribute(xmlContext, appSequenceElement,
discoveryNsUri, sequenceIdString, header->AppSequence->SequenceId))
goto cleanup;
+    }

Do we need the namespace for SequenceID?



More information about the wine-devel mailing list