mirror of
https://github.com/reactos/wine.git
synced 2025-02-13 16:59:37 +00:00
webservices: Always create a copy of strings to insert in the dictionary.
Signed-off-by: Hans Leidekker <hans@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
0567952c70
commit
3076f5e3fb
@ -1208,14 +1208,24 @@ static HRESULT CALLBACK dict_cb( void *state, const WS_XML_STRING *str, BOOL *fo
|
||||
{
|
||||
struct dictionary *dict = state;
|
||||
HRESULT hr = S_OK;
|
||||
BYTE *bytes;
|
||||
int index;
|
||||
|
||||
if ((index = find_string( dict, str->bytes, str->length, id )) == -1 ||
|
||||
(hr = insert_string( dict, str->bytes, str->length, index, id )) == S_OK)
|
||||
if ((index = find_string( dict, str->bytes, str->length, id )) == -1)
|
||||
{
|
||||
*found = TRUE;
|
||||
return S_OK;
|
||||
}
|
||||
|
||||
if (!(bytes = heap_alloc( str->length ))) return E_OUTOFMEMORY;
|
||||
memcpy( bytes, str->bytes, str->length );
|
||||
if ((hr = insert_string( dict, bytes, str->length, index, id )) == S_OK)
|
||||
{
|
||||
*found = TRUE;
|
||||
return S_OK;
|
||||
}
|
||||
heap_free( bytes );
|
||||
|
||||
*found = FALSE;
|
||||
return hr;
|
||||
}
|
||||
@ -1672,6 +1682,7 @@ static HRESULT build_dict( const BYTE *buf, ULONG buflen, struct dictionary *dic
|
||||
}
|
||||
if ((hr = insert_string( dict, bytes, size, index, NULL )) != S_OK)
|
||||
{
|
||||
heap_free( bytes );
|
||||
clear_dict( dict );
|
||||
return hr;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user