- hr = IStream_Clone(image->stream, &stream);
- if (FAILED(hr))
That's odd. When does that happen?
- if (stat == Ok)
- {
- memcpy(&new_image->format, &codec->info.FormatID, sizeof(GUID));
- free_image_data(image);
- if (image->type == ImageTypeBitmap)
- *(GpBitmap *)image = *(GpBitmap *)new_image;
- else if (image->type == ImageTypeMetafile)
- *(GpMetafile *)image = *(GpMetafile *)new_image;
- return Ok;
- }
Why did you re-implement move_bitmap() ?
Vincent Povirk madewokherd@gmail.com wrote:
- hr = IStream_Clone(image->stream, &stream);
- if (FAILED(hr))
That's odd. When does that happen?
IStream returned by SHCreateStreamOnFile (wrapped by GdipCreateStreamOnFile) intentionally doesn't implement Clone, there are even tests for that in shlwapi.
- if (stat == Ok)
- {
- memcpy(&new_image->format, &codec->info.FormatID, sizeof(GUID));
- free_image_data(image);
- if (image->type == ImageTypeBitmap)
- *(GpBitmap *)image = *(GpBitmap *)new_image;
- else if (image->type == ImageTypeMetafile)
- *(GpMetafile *)image = *(GpMetafile *)new_image;
- return Ok;
- }
Why did you re-implement move_bitmap() ?
An image can be not a bitmap.
- if (stat == Ok)
- {
- memcpy(&new_image->format, &codec->info.FormatID, sizeof(GUID));
- free_image_data(image);
- if (image->type == ImageTypeBitmap)
- *(GpBitmap *)image = *(GpBitmap *)new_image;
- else if (image->type == ImageTypeMetafile)
- *(GpMetafile *)image = *(GpMetafile *)new_image;
- return Ok;
- }
Why did you re-implement move_bitmap() ?
An image can be not a bitmap.
Yes, but a non-bitmap (metafile) cannot have multiple frames.
Vincent Povirk madewokherd@gmail.com wrote:
Why did you re-implement move_bitmap() ?
An image can be not a bitmap.
Yes, but a non-bitmap (metafile) cannot have multiple frames.
It actually can have records which represent embedded EMFs.
Yes, but a non-bitmap (metafile) cannot have multiple frames.
It actually can have records which represent embedded EMFs.
Really? Well, OK then.
- if (stat == Ok)
- {
memcpy(&new_image->format, &codec->info.FormatID, sizeof(GUID));
free_image_data(image);
if (image->type == ImageTypeBitmap)
*(GpBitmap *)image = *(GpBitmap *)new_image;
else if (image->type == ImageTypeMetafile)
*(GpMetafile *)image = *(GpMetafile *)new_image;
return Ok;
- }
You appear to be leaking new_image.
Vincent Povirk madewokherd@gmail.com wrote:
- if (stat == Ok)
- {
memcpy(&new_image->format, &codec->info.FormatID, sizeof(GUID));
free_image_data(image);
if (image->type == ImageTypeBitmap)
*(GpBitmap *)image = *(GpBitmap *)new_image;
else if (image->type == ImageTypeMetafile)
*(GpMetafile *)image = *(GpMetafile *)new_image;
return Ok;
- }
You appear to be leaking new_image.
Thanks. I hope that won't prevent accepting other patches in the series.