+++ /dev/null
-Index: domdoc.c\r
-===================================================================\r
---- domdoc.c (revision 57310)\r
-+++ domdoc.c (working copy)\r
-@@ -1447,6 +1447,9 @@\r
- #define EXPECT_HR(hr,hr_exp) \\r
- ok(hr == hr_exp, "got 0x%08x, expected 0x%08x\n", hr, hr_exp)\r
-\r
-+#define EXPECT_NOT_HR(hr,hr_exp) \\r
-+ ok(hr != hr_exp, "got 0x%08x, expected not 0x%08x\n", hr, hr_exp)\r
-+\r
- static const WCHAR szEmpty[] = { 0 };\r
- static const WCHAR szIncomplete[] = {\r
- '<','?','x','m','l',' ',\r
-@@ -4244,6 +4247,30 @@\r
- free_bstrs();\r
- }\r
-\r
-+/*\r
-+ * This function is to display that xmlnodelist_QueryInterface\r
-+ * generates SEGV for these conditions, and once fixed make sure\r
-+ * it never does it again.\r
-+ */\r
-+static void verify_nodelist_query_interface(IXMLDOMNodeList *node_list)\r
-+{\r
-+ HRESULT hr;\r
-+ /*\r
-+ * NOTE: The following calls are supposed to test wine's\r
-+ * xmlnodelist_QueryInterface behaving properly.\r
-+ * While we should be able to expect E_POINTER (due to the NULL pointer),\r
-+ * it seems MS' own implementation(s) violate the spec and return\r
-+ * E_INVALIDARG. To not get cought be a potentially correct implementation\r
-+ * in the future, we check for NOT S_OK.\r
-+ */\r
-+ hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IUnknown, NULL);\r
-+ EXPECT_NOT_HR(hr, S_OK);\r
-+ hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IDispatch, NULL);\r
-+ EXPECT_NOT_HR(hr, S_OK);\r
-+ hr = IXMLDOMNodeList_QueryInterface(node_list, &IID_IXMLDOMNodeList, NULL);\r
-+ EXPECT_NOT_HR(hr, S_OK);\r
-+}\r
-+\r
- static void test_get_childNodes(void)\r
- {\r
- IXMLDOMNodeList *node_list, *node_list2;\r
-@@ -4271,6 +4298,8 @@\r
- hr = IXMLDOMElement_get_childNodes( element, &node_list );\r
- EXPECT_HR(hr, S_OK);\r
-\r
-+ verify_nodelist_query_interface(node_list);\r
-+\r
- hr = IXMLDOMNodeList_get_length( node_list, &len );\r
- EXPECT_HR(hr, S_OK);\r
- ok( len == 4, "len %d\n", len);\r
-Index: domdoc.c\r
-===================================================================\r
---- domdoc.c (revision 57539)\r
-+++ domdoc.c (revision 57540)\r
-@@ -1398,7 +1398,9 @@\r
- istream_Clone
- };
-
-+#if CORE_6738_IS_FIXED
- static IStream savestream = { &StreamVtbl };
-+#endif
-
- #define EXPECT_CHILDREN(node) _expect_children((IXMLDOMNode*)node, __LINE__)
- static void _expect_children(IXMLDOMNode *node, int line)
-@@ -7274,6 +7276,7 @@\r
- free_bstrs();
- }
-
-+#if CORE_6738_IS_FIXED
- static void test_save(void)
- {
- IXMLDOMDocument *doc, *doc2;
-@@ -7410,6 +7413,7 @@\r
- IXMLDOMDocument_Release(doc);
- free_bstrs();
- }
-+#endif /* CORE_6738_IS_FIXED */
-
- static void test_testTransforms(void)
- {
-@@ -12538,7 +12542,9 @@\r
- test_XSLPattern();
- test_cloneNode();
- test_xmlTypes();
-+#if CORE_6738_IS_FIXED
- test_save();
-+#endif
- test_testTransforms();
- test_namespaces_basic();
- test_namespaces_change();