Commit 1d78226f authored by Nikolay Sivov's avatar Nikolay Sivov Committed by Alexandre Julliard

msxml3/saxreader: Accept disabled "exhaustive-errors" property.

parent 9ae8b8c0
......@@ -100,6 +100,10 @@ static const WCHAR FeatureNamespacePrefixesW[] = {
'/','n','a','m','e','s','p','a','c','e','-','p','r','e','f','i','x','e','s',0
};
static const WCHAR ExhaustiveErrorsW[] = {
'e','x','h','a','u','s','t','i','v','e','-','e','r','r','o','r','s',0
};
struct saxreader_feature_pair
{
saxreader_feature feature;
......@@ -107,6 +111,7 @@ struct saxreader_feature_pair
};
static const struct saxreader_feature_pair saxreader_feature_map[] = {
{ ExhaustiveErrors, ExhaustiveErrorsW },
{ ExternalGeneralEntities, FeatureExternalGeneralEntitiesW },
{ ExternalParameterEntities, FeatureExternalParameterEntitiesW },
{ LexicalHandlerParEntities, FeatureLexicalHandlerParEntitiesW },
......@@ -3216,7 +3221,13 @@ static HRESULT WINAPI isaxxmlreader_getFeature(
TRACE("(%p)->(%s %p)\n", This, debugstr_w(feature_name), value);
feature = get_saxreader_feature(feature_name);
if (feature == Namespaces || feature == NamespacePrefixes)
if (This->version < MSXML4 && feature == ExhaustiveErrors)
return E_INVALIDARG;
if (feature == Namespaces ||
feature == NamespacePrefixes ||
feature == ExhaustiveErrors)
return get_feature_value(This, feature, value);
FIXME("(%p)->(%s %p) stub\n", This, debugstr_w(feature_name), value);
......@@ -3238,6 +3249,7 @@ static HRESULT WINAPI isaxxmlreader_putFeature(
/* accepted cases */
if ((feature == ExternalGeneralEntities && value == VARIANT_FALSE) ||
(feature == ExternalParameterEntities && value == VARIANT_FALSE) ||
(feature == ExhaustiveErrors && value == VARIANT_FALSE) ||
feature == Namespaces ||
feature == NamespacePrefixes)
{
......
......@@ -2789,6 +2789,20 @@ static void test_saxreader_features(void)
continue;
}
value = VARIANT_TRUE;
hr = ISAXXMLReader_getFeature(reader, _bstr_("exhaustive-errors"), &value);
if (IsEqualGUID(entry->guid, &CLSID_SAXXMLReader40) ||
IsEqualGUID(entry->guid, &CLSID_SAXXMLReader60))
{
ok(hr == S_OK, "Failed to get feature value, hr %#x.\n", hr);
ok(value == VARIANT_FALSE, "Unexpected default feature value.\n");
hr = ISAXXMLReader_putFeature(reader, _bstr_("exhaustive-errors"), VARIANT_FALSE);
ok(hr == S_OK, "Failed to put feature value, hr %#x.\n", hr);
}
else
ok(hr == E_INVALIDARG, "Unexpected return value %#x.\n", hr);
name = feature_names;
while (*name)
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment