Module: wine Branch: master Commit: eac6ed018ca96fd73fd8fb5145cd0b5875745d2e URL: http://source.winehq.org/git/wine.git/?a=commit;h=eac6ed018ca96fd73fd8fb5145...
Author: Adam Martinson amartinson@codeweavers.com Date: Wed Oct 20 16:35:55 2010 -0500
msxml3: Implement schema_cache_remove().
---
dlls/msxml3/schema.c | 9 +++++++-- dlls/msxml3/tests/schema.c | 8 ++++++-- 2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/dlls/msxml3/schema.c b/dlls/msxml3/schema.c index 9ef08a3..7eadd51 100644 --- a/dlls/msxml3/schema.c +++ b/dlls/msxml3/schema.c @@ -448,8 +448,13 @@ static HRESULT WINAPI schema_cache_get(IXMLDOMSchemaCollection *iface, BSTR uri,
static HRESULT WINAPI schema_cache_remove(IXMLDOMSchemaCollection *iface, BSTR uri) { - FIXME("stub\n"); - return E_NOTIMPL; + schema_cache *This = impl_from_IXMLDOMSchemaCollection(iface); + xmlChar* name = xmlChar_from_wchar(uri); + TRACE("(%p)->(%s)\n", This, wine_dbgstr_w(uri)); + + xmlHashRemoveEntry(This->cache, name, cache_free); + heap_free(name); + return S_OK; }
static HRESULT WINAPI schema_cache_get_length(IXMLDOMSchemaCollection *iface, LONG *length) diff --git a/dlls/msxml3/tests/schema.c b/dlls/msxml3/tests/schema.c index f889af4..ba99c28 100644 --- a/dlls/msxml3/tests/schema.c +++ b/dlls/msxml3/tests/schema.c @@ -461,6 +461,10 @@ static void test_length(void)
ole_expect(IXMLDOMSchemaCollection_get_length(cache, NULL), E_POINTER);
+ /* MSDN lies; removing a non-existant entry produces no error */ + ole_check(IXMLDOMSchemaCollection_remove(cache, NULL)); + ole_check(IXMLDOMSchemaCollection_remove(cache, _bstr_(xdr_schema1_uri))); + length = -1; ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); ok(length == 0, "expected length 0, got %i\n", length); @@ -491,13 +495,13 @@ static void test_length(void) ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); ok(length == 2, "expected length 2, got %i\n", length);
- ole_check(IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema2_uri), v)); + ole_check(IXMLDOMSchemaCollection_remove(cache, _bstr_(xdr_schema2_uri)));
length = -1; ole_check(IXMLDOMSchemaCollection_get_length(cache, &length)); ok(length == 1, "expected length 1, got %i\n", length);
- ole_check(IXMLDOMSchemaCollection_add(cache, _bstr_(xdr_schema3_uri), v)); + ole_check(IXMLDOMSchemaCollection_remove(cache, _bstr_(xdr_schema3_uri)));
length = -1; ole_check(IXMLDOMSchemaCollection_get_length(cache, &length));