diff --git a/libgimp/gimpimagemetadata-save.c b/libgimp/gimpimagemetadata-save.c index 3781d732d6..f84763c5d8 100644 --- a/libgimp/gimpimagemetadata-save.c +++ b/libgimp/gimpimagemetadata-save.c @@ -83,16 +83,16 @@ gimp_image_metadata_save_prepare (GimpImage *image, if (metadata) { - GDateTime *datetime; - const GimpParasite *comment_parasite; - const gchar *comment = NULL; - gint image_width; - gint image_height; - gdouble xres; - gdouble yres; - gchar buffer[32]; - gchar *str; - GExiv2Metadata *g2metadata = GEXIV2_METADATA (metadata); + GDateTime *datetime; + GimpParasite *comment_parasite; + gchar *comment = NULL; + gint image_width; + gint image_height; + gdouble xres; + gdouble yres; + gchar buffer[32]; + gchar *str; + GExiv2Metadata *g2metadata = GEXIV2_METADATA (metadata); image_width = gimp_image_width (image); image_height = gimp_image_height (image); @@ -101,7 +101,14 @@ gimp_image_metadata_save_prepare (GimpImage *image, comment_parasite = gimp_image_get_parasite (image, "gimp-comment"); if (comment_parasite) - comment = gimp_parasite_data (comment_parasite); + { + guint32 parasite_size; + + comment = (gchar *) gimp_parasite_get_data (comment_parasite, ¶site_size); + comment = g_strndup (comment, parasite_size); + + gimp_parasite_free (comment_parasite); + } /* Exif */ @@ -198,7 +205,7 @@ gimp_image_metadata_save_prepare (GimpImage *image, g_free (str); g_date_time_unref (datetime); - + g_clear_pointer (&comment, g_free); } else { diff --git a/libgimp/gimpprocedureconfig.c b/libgimp/gimpprocedureconfig.c index 5a80bddaf9..0de75f6ed4 100644 --- a/libgimp/gimpprocedureconfig.c +++ b/libgimp/gimpprocedureconfig.c @@ -326,8 +326,10 @@ gimp_procedure_config_get_parasite (GimpProcedureConfig *config, if (parasite) { - value = g_strndup (gimp_parasite_data (parasite), - gimp_parasite_data_size (parasite)); + guint32 parasite_size; + + value = (gchar *) gimp_parasite_get_data (parasite, ¶site_size); + value = g_strndup (value, parasite_size); gimp_parasite_free (parasite); if (value && ! strlen (value)) @@ -374,10 +376,11 @@ gimp_procedure_config_set_parasite (GimpProcedureConfig *config, /* it there is a parasite, always override it if its value was * changed */ - gchar *image_value; + gchar *image_value; + guint32 parasite_size; - image_value = g_strndup (gimp_parasite_data (parasite), - gimp_parasite_data_size (parasite)); + image_value = (gchar *) gimp_parasite_get_data (parasite, ¶site_size); + image_value = g_strndup (image_value, parasite_size); gimp_parasite_free (parasite); if (g_strcmp0 (value, image_value)) diff --git a/libgimpconfig/gimpconfig-iface.c b/libgimpconfig/gimpconfig-iface.c index 7733b5e392..9c60b18faa 100644 --- a/libgimpconfig/gimpconfig-iface.c +++ b/libgimpconfig/gimpconfig-iface.c @@ -623,18 +623,19 @@ gimp_config_deserialize_parasite (GimpConfig *config, gpointer data, GError **error) { + const gchar *parasite_data; + guint32 parasite_size; + g_return_val_if_fail (GIMP_IS_CONFIG (config), FALSE); g_return_val_if_fail (parasite != NULL, FALSE); g_return_val_if_fail (error == NULL || *error == NULL, FALSE); - if (! gimp_parasite_data (parasite)) + parasite_data = gimp_parasite_get_data (parasite, ¶site_size); + if (! parasite_data) return TRUE; - return gimp_config_deserialize_string (config, - gimp_parasite_data (parasite), - gimp_parasite_data_size (parasite), - data, - error); + return gimp_config_deserialize_string (config, parasite_data, parasite_size, + data, error); } /**