changeset 1661:13ff1db545f6

Fix two memory failures 1. if the description field for a exif information is empty the program dumps core when trying to change this. The reason is a strcmp with a NULL value. The fix add the small functionality to set the field to default when it is set empty. 2. There was a g_strdup miss in exif.c which could end in memory corruption.
author mow
date Sun, 21 Jun 2009 22:52:08 +0000
parents da8afd03152f
children 20963c5d332c
files src/bar_exif.c src/exif.c
diffstat 2 files changed, 8 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/bar_exif.c	Sun Jun 21 20:14:53 2009 +0000
+++ b/src/bar_exif.c	Sun Jun 21 22:52:08 2009 +0000
@@ -494,7 +494,13 @@
 		g_free(ee->key);
 		ee->key = g_strdup(gtk_entry_get_text(GTK_ENTRY(cdd->key_entry)));
 		title = gtk_entry_get_text(GTK_ENTRY(cdd->title_entry));
-		if (strcmp(ee->title, title) != 0)
+		if (!title || strlen(title) == 0)
+			{
+			g_free(ee->title);
+			ee->title = exif_get_description_by_key(ee->key);
+			ee->auto_title = TRUE;
+			}
+		else if (!ee->title || strcmp(ee->title, title) != 0)
 			{
 			g_free(ee->title);
 			ee->title = g_strdup(title);
--- a/src/exif.c	Sun Jun 21 20:14:53 2009 +0000
+++ b/src/exif.c	Sun Jun 21 22:52:08 2009 +0000
@@ -1516,7 +1516,7 @@
 	i = 0;
 	while (ExifKnownGPSInfoMarkersList[i].tag > 0)
 	{
-	   if (strcmp(key, ExifKnownGPSInfoMarkersList[i].key) == 0) return _(ExifKnownGPSInfoMarkersList[i].description);
+	   if (strcmp(key, ExifKnownGPSInfoMarkersList[i].key) == 0) return g_strdup(_(ExifKnownGPSInfoMarkersList[i].description));
 	   i++;
 	}