mirror of
https://gitlab.gnome.org/GNOME/gimp.git
synced 2025-07-03 17:33:25 +00:00
Bug 765411: CRITICAL warnings loading an xcf with...
"exif-data" parasite To migrate old "exif-data" parasites to GimpMetadata an exif-only jpeg file is generated in memory, but its APP1 marker length was 2 bytes short resulting in a CRITICAL warning: ** (gimp-2.9:9): CRITICAL **: Directory Photo: IFD exceeds data buffer, cannot read next pointer. Properly terminating the jpeg with an EOI marker also gets rid of the WARNING: ** (gimp-2.9:9): WARNING **: JPEG format error, rc = 5
This commit is contained in:
parent
4e144fea69
commit
a3f4c50b3e
1 changed files with 5 additions and 3 deletions
|
@ -622,15 +622,16 @@ gimp_metadata_set_from_exif (GimpMetadata *metadata,
|
|||
GByteArray *exif_bytes;
|
||||
GimpMetadata *exif_metadata;
|
||||
guint8 data_size[2] = { 0, };
|
||||
const guint8 eoi[2] = { 0xff, 0xd9 };
|
||||
|
||||
g_return_val_if_fail (GEXIV2_IS_METADATA (metadata), FALSE);
|
||||
g_return_val_if_fail (exif_data != NULL, FALSE);
|
||||
g_return_val_if_fail (exif_data_length > 0, FALSE);
|
||||
g_return_val_if_fail (exif_data_length < 65536, FALSE);
|
||||
g_return_val_if_fail (exif_data_length + 2 < 65536, FALSE);
|
||||
g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
|
||||
|
||||
data_size[0] = (exif_data_length & 0xFF00) >> 8;
|
||||
data_size[1] = (exif_data_length & 0x00FF);
|
||||
data_size[0] = ((exif_data_length + 2) & 0xFF00) >> 8;
|
||||
data_size[1] = ((exif_data_length + 2) & 0x00FF);
|
||||
|
||||
exif_bytes = g_byte_array_new ();
|
||||
exif_bytes = g_byte_array_append (exif_bytes,
|
||||
|
@ -639,6 +640,7 @@ gimp_metadata_set_from_exif (GimpMetadata *metadata,
|
|||
data_size, 2);
|
||||
exif_bytes = g_byte_array_append (exif_bytes,
|
||||
(guint8 *) exif_data, exif_data_length);
|
||||
exif_bytes = g_byte_array_append (exif_bytes, eoi, 2);
|
||||
|
||||
exif_metadata = gimp_metadata_new ();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue