From 54df4811c61cfd22787f46ea7ea2d6f555e74ade Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Thu, 19 Apr 2012 10:53:15 +0400 Subject: [PATCH] msxml3: Fix handling of feature values. --- dlls/msxml3/saxreader.c | 6 ++++++ dlls/msxml3/tests/saxreader.c | 7 +------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/dlls/msxml3/saxreader.c b/dlls/msxml3/saxreader.c index e9ab84199a0..936f583bf26 100644 --- a/dlls/msxml3/saxreader.c +++ b/dlls/msxml3/saxreader.c @@ -288,6 +288,12 @@ static const WCHAR PropertyXMLDeclVersionW[] = { static inline HRESULT set_feature_value(saxreader *reader, saxreader_feature feature, VARIANT_BOOL value) { + /* handling of non-VARIANT_* values is version dependent */ + if ((reader->version < MSXML4) && (value != VARIANT_TRUE)) + value = VARIANT_FALSE; + if ((reader->version >= MSXML4) && (value != VARIANT_FALSE)) + value = VARIANT_TRUE; + if (value == VARIANT_TRUE) reader->features |= feature; else diff --git a/dlls/msxml3/tests/saxreader.c b/dlls/msxml3/tests/saxreader.c index 0c107af6838..5c768f4f010 100644 --- a/dlls/msxml3/tests/saxreader.c +++ b/dlls/msxml3/tests/saxreader.c @@ -2198,12 +2198,7 @@ static void test_saxreader_features(void) value = 0xd; hr = ISAXXMLReader_getFeature(reader, _bstr_(*name), &value); EXPECT_HR(hr, S_OK); - if (IsEqualGUID(entry->guid, &CLSID_SAXXMLReader40) || - IsEqualGUID(entry->guid, &CLSID_SAXXMLReader60)) - todo_wine - ok(entry->value2 == value, "%s: got wrong value %x, expected %x\n", entry->clsid, value, entry->value2); - else - ok(entry->value2 == value, "%s: got wrong value %x, expected %x\n", entry->clsid, value, entry->value2); + ok(entry->value2 == value, "%s: got wrong value %x, expected %x\n", entry->clsid, value, entry->value2); hr = ISAXXMLReader_putFeature(reader, _bstr_(*name), VARIANT_FALSE); EXPECT_HR(hr, S_OK); -- 2.11.4.GIT