This appears to break stuff, example test that we should probably anyway: --- { hr = IXMLDOMDocument_loadXML(doc, _bstr_("<?xml version=\"1.0\" standalone=\"yes\"?>\r\n<test/>\r\n"), &b); ok(hr == S_OK, "got 0x%08x\n", hr); ok(b == VARIANT_TRUE, "got %d\n", b); hr = CreateStreamOnHGlobal(NULL, TRUE, &stream); ok(hr == S_OK, "got 0x%08x\n", hr); V_VT(&var) = VT_UNKNOWN; V_UNKNOWN(&var) = (IUnknown*)stream; hr = IXMLDOMDocument_save(doc, var); ok(hr == S_OK, "got 0x%08x\n", hr); hr = GetHGlobalFromStream(stream, &global); ok(hr == S_OK, "got 0x%08x\n", hr); p = GlobalLock(global); p[GlobalSize(global)] = 0; ok(0, "output %s\n", wine_dbgstr_a(p)); } --- Test failed: output "<?xml version=\"1.0\" standalone=\"yes\"?>\n<?xml version=\"1.0\" standalone=\"yes\"?>\n<test/>\n" This produces duplicate declaration after your change, but is fine with current wine.