--- a/libupnpp/soaphelp.cxx
+++ b/libupnpp/soaphelp.cxx
@@ -69,8 +69,9 @@
         }
         const char *name = ixmlNode_getNodeName(cld);
         if (cld == 0) {
-            cerr << "decodeSoap: got null name ??:" << 
-                ixmlPrintNode(cld) << endl;
+            DOMString pnode = ixmlPrintNode(cld);
+            cerr << "decodeSoap: got null name ??:" << pnode << endl;
+            ixmlFreeDOMString(pnode);
             goto out;
         }
         IXML_Node *txtnode = ixmlNode_getFirstChild(cld);
@@ -143,6 +144,14 @@
     return out;
 }
 
+// Yes inefficient. whatever...
+string SoapArgs::i2s(int val)
+{
+    char cbuf[30];
+    sprintf(cbuf, "%d", val);
+    return string(cbuf);
+}
+
 IXML_Document *buildSoapBody(SoapData& data)
 {
     IXML_Document *doc = ixmlDocument_createDocument();