Hans Leidekker : webservices: Fix memory leaks on error paths in WsCreateReader.
Alexandre Julliard
julliard at wine.codeweavers.com
Wed Mar 30 10:00:31 CDT 2016
Module: wine
Branch: master
Commit: e4a68fd57657d58d733f9813d2a675cab1a4bf10
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e4a68fd57657d58d733f9813d2a675cab1a4bf10
Author: Hans Leidekker <hans at codeweavers.com>
Date: Wed Mar 30 14:12:15 2016 +0200
webservices: Fix memory leaks on error paths in WsCreateReader.
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/webservices/reader.c | 20 ++++++++++++--------
1 file changed, 12 insertions(+), 8 deletions(-)
diff --git a/dlls/webservices/reader.c b/dlls/webservices/reader.c
index 7adc283..9ae6254 100644
--- a/dlls/webservices/reader.c
+++ b/dlls/webservices/reader.c
@@ -464,6 +464,15 @@ static void clear_prefixes( struct prefix *prefixes, ULONG count )
}
}
+static void free_reader( struct reader *reader )
+{
+ if (!reader) return;
+ destroy_nodes( reader->root );
+ clear_prefixes( reader->prefixes, reader->nb_prefixes );
+ heap_free( reader->prefixes );
+ heap_free( reader );
+}
+
static HRESULT set_prefix( struct prefix *prefix, const WS_XML_STRING *str, const WS_XML_STRING *ns )
{
if (str)
@@ -608,14 +617,14 @@ HRESULT WINAPI WsCreateReader( const WS_XML_READER_PROPERTY *properties, ULONG c
hr = set_reader_prop( reader, properties[i].id, properties[i].value, properties[i].valueSize );
if (hr != S_OK)
{
- heap_free( reader );
+ free_reader( reader );
return hr;
}
}
if ((hr = read_init_state( reader )) != S_OK)
{
- heap_free( reader );
+ free_reader( reader );
return hr;
}
@@ -631,12 +640,7 @@ void WINAPI WsFreeReader( WS_XML_READER *handle )
struct reader *reader = (struct reader *)handle;
TRACE( "%p\n", handle );
-
- if (!reader) return;
- destroy_nodes( reader->root );
- clear_prefixes( reader->prefixes, reader->nb_prefixes );
- heap_free( reader->prefixes );
- heap_free( reader );
+ free_reader( reader );
}
/**************************************************************************
More information about the wine-cvs
mailing list