gdiplus: Don't prematurely release stream.
This commit is contained in:
parent
de351ab991
commit
7d03a41325
|
@ -803,6 +803,8 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE hwmf, BOOL delete,
|
||||||
|
|
||||||
if(!hwmf || !metafile || !placeable)
|
if(!hwmf || !metafile || !placeable)
|
||||||
return InvalidParameter;
|
return InvalidParameter;
|
||||||
|
|
||||||
|
*metafile = NULL;
|
||||||
read = GetMetaFileBitsEx(hwmf, 0, NULL);
|
read = GetMetaFileBitsEx(hwmf, 0, NULL);
|
||||||
if(!read)
|
if(!read)
|
||||||
return GenericError;
|
return GenericError;
|
||||||
|
@ -819,20 +821,20 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE hwmf, BOOL delete,
|
||||||
|
|
||||||
if(CreateStreamOnHGlobal(copy, TRUE, &stream) != S_OK){
|
if(CreateStreamOnHGlobal(copy, TRUE, &stream) != S_OK){
|
||||||
ERR("could not make stream\n");
|
ERR("could not make stream\n");
|
||||||
goto end;
|
GdipFree(copy);
|
||||||
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
*metafile = GdipAlloc(sizeof(GpMetafile));
|
*metafile = GdipAlloc(sizeof(GpMetafile));
|
||||||
if(!*metafile){
|
if(!*metafile){
|
||||||
retval = OutOfMemory;
|
retval = OutOfMemory;
|
||||||
goto end;
|
goto err;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(OleLoadPicture(stream, 0, FALSE, &IID_IPicture,
|
if(OleLoadPicture(stream, 0, FALSE, &IID_IPicture,
|
||||||
(LPVOID*) &((*metafile)->image.picture)) != S_OK){
|
(LPVOID*) &((*metafile)->image.picture)) != S_OK)
|
||||||
GdipFree(*metafile);
|
goto err;
|
||||||
goto end;
|
|
||||||
}
|
|
||||||
|
|
||||||
(*metafile)->image.type = ImageTypeMetafile;
|
(*metafile)->image.type = ImageTypeMetafile;
|
||||||
(*metafile)->bounds.X = ((REAL) placeable->BoundingBox.Left) / ((REAL) placeable->Inch);
|
(*metafile)->bounds.X = ((REAL) placeable->BoundingBox.Left) / ((REAL) placeable->Inch);
|
||||||
|
@ -846,11 +848,11 @@ GpStatus WINGDIPAPI GdipCreateMetafileFromWmf(HMETAFILE hwmf, BOOL delete,
|
||||||
if(delete)
|
if(delete)
|
||||||
DeleteMetaFile(hwmf);
|
DeleteMetaFile(hwmf);
|
||||||
|
|
||||||
retval = Ok;
|
return Ok;
|
||||||
|
|
||||||
end:
|
err:
|
||||||
|
GdipFree(*metafile);
|
||||||
IStream_Release(stream);
|
IStream_Release(stream);
|
||||||
GdipFree(copy);
|
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue