msi: Fix a record leak on error paths (Coverity).

This commit is contained in:
Nikolay Sivov 2014-03-27 06:55:24 +04:00 committed by Alexandre Julliard
parent d78a0612ed
commit dc33b13581
1 changed files with 8 additions and 3 deletions

View File

@ -1003,7 +1003,7 @@ static UINT HANDLE_CustomType5_6( MSIPACKAGE *package, const WCHAR *source, cons
'S','E','L','E','C','T',' ','*',' ','F','R','O','M',' ',
'`','B','i' ,'n','a','r','y','`',' ','W','H','E','R','E',' ',
'`','N','a','m','e','`',' ','=',' ','\'','%','s','\'',0};
MSIRECORD *row = 0;
MSIRECORD *row = NULL;
msi_custom_action_info *info;
CHAR *buffer = NULL;
WCHAR *bufferw = NULL;
@ -1017,10 +1017,14 @@ static UINT HANDLE_CustomType5_6( MSIPACKAGE *package, const WCHAR *source, cons
return ERROR_FUNCTION_FAILED;
r = MSI_RecordReadStream(row, 2, NULL, &sz);
if (r != ERROR_SUCCESS) return r;
if (r != ERROR_SUCCESS) goto done;
buffer = msi_alloc( sz + 1 );
if (!buffer) return ERROR_FUNCTION_FAILED;
if (!buffer)
{
r = ERROR_FUNCTION_FAILED;
goto done;
}
r = MSI_RecordReadStream(row, 2, buffer, &sz);
if (r != ERROR_SUCCESS)
@ -1040,6 +1044,7 @@ static UINT HANDLE_CustomType5_6( MSIPACKAGE *package, const WCHAR *source, cons
done:
msi_free(bufferw);
msi_free(buffer);
msiobj_release(&row->hdr);
return r;
}