Update of /cvsroot/ufraw/ufraw
In directory vz-cvs-3.sog:/tmp/cvs-serv31881
Modified Files:
ufraw-batch.c ufraw-gimp.c ufraw.c ufraw.h ufraw_chooser.c
ufraw_preview.c ufraw_ufraw.c
Log Message:
Fix segfault while loading darkframe.
Index: ufraw_chooser.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw_chooser.c,v
retrieving revision 1.35
retrieving revision 1.36
diff -u -d -r1.35 -r1.36
--- ufraw_chooser.c 20 Feb 2011 06:15:20 -0000 1.35
+++ ufraw_chooser.c 6 Nov 2011 03:30:55 -0000 1.36
@@ -151,6 +151,7 @@
}
int status = ufraw_config(uf, rc, conf, cmd);
if (status == UFRAW_ERROR) {
+ ufraw_close_darkframe(uf->conf);
ufraw_close(uf);
} else {
ufraw_preview(uf, rc, FALSE, NULL);
@@ -160,6 +161,9 @@
}
g_slist_free(saveList);
}
+ if (rc->darkframe != NULL)
+ ufraw_close_darkframe(rc);
+
gtk_widget_destroy(GTK_WIDGET(fileChooser));
ufraw_message(UFRAW_SET_PARENT, NULL);
}
Index: ufraw_preview.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw_preview.c,v
retrieving revision 1.357
retrieving revision 1.358
diff -u -d -r1.357 -r1.358
--- ufraw_preview.c 22 Aug 2011 03:45:56 -0000 1.357
+++ ufraw_preview.c 6 Nov 2011 03:30:55 -0000 1.358
@@ -2521,10 +2521,7 @@
if (data->FreezeDialog) return;
if (CFG->darkframe == NULL) return;
- ufraw_close(CFG->darkframe);
- g_free(CFG->darkframe);
- CFG->darkframe = NULL;
- CFG->darkframeFile[0] = '\0';
+ ufraw_close_darkframe(CFG);
set_darkframe(data);
(void)unused;
@@ -5904,6 +5901,8 @@
strcpy(RC->outputFilename, "");
}
// UFRAW_RESPONSE_DELETE requires no special action
+ if (rc->darkframe != data->UF->conf->darkframe)
+ ufraw_close_darkframe(data->UF->conf);
ufraw_close(data->UF);
g_free(data->SpotLabels);
g_free(data->AvrLabels);
Index: ufraw.h
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw.h,v
retrieving revision 1.163
retrieving revision 1.164
diff -u -d -r1.163 -r1.164
--- ufraw.h 27 Jul 2011 13:50:45 -0000 1.163
+++ ufraw.h 6 Nov 2011 03:30:55 -0000 1.164
@@ -379,6 +379,7 @@
gboolean bufferok);
ufraw_image_data *ufraw_convert_image_area(ufraw_data *uf, unsigned saidx,
UFRawPhase phase);
+ void ufraw_close_darkframe(conf_data *uf);
void ufraw_close(ufraw_data *uf);
void ufraw_flip_orientation(ufraw_data *uf, int flip);
void ufraw_flip_image(ufraw_data *uf, int flip);
Index: ufraw-gimp.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw-gimp.c,v
retrieving revision 1.67
retrieving revision 1.68
diff -u -d -r1.67 -r1.68
--- ufraw-gimp.c 20 Feb 2011 06:15:20 -0000 1.67
+++ ufraw-gimp.c 6 Nov 2011 03:30:55 -0000 1.68
@@ -272,6 +272,7 @@
if (sendToGimpMode) gimp_progress_update(0.3);
ufraw_save_gimp_image(uf, NULL);
if (sendToGimpMode) gimp_progress_update(1.0);
+ ufraw_close_darkframe(uf->conf);
ufraw_close(uf);
/* To make sure we don't delete the raw file by mistake we check
* that the file is really an ID file. */
Index: ufraw_ufraw.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw_ufraw.c,v
retrieving revision 1.267
retrieving revision 1.268
diff -u -d -r1.267 -r1.268
--- ufraw_ufraw.c 22 Aug 2011 03:20:21 -0000 1.267
+++ ufraw_ufraw.c 6 Nov 2011 03:30:55 -0000 1.268
@@ -283,7 +283,7 @@
if (strcmp(uf->conf->darkframeFile, uf->conf->darkframe->filename) ==
0)
return UFRAW_SUCCESS;
// Otherwise we need to close the previous darkframe
- ufraw_close(uf->conf->darkframe);
+ ufraw_close_darkframe(uf->conf);
}
ufraw_data *dark = uf->conf->darkframe =
ufraw_open(uf->conf->darkframeFile);
@@ -694,6 +694,17 @@
return UFRAW_SUCCESS;
}
+/* Free any darkframe associated with conf */
+void ufraw_close_darkframe(conf_data *conf)
+{
+ if (conf && conf->darkframe != NULL) {
+ ufraw_close(conf->darkframe);
+ g_free(conf->darkframe);
+ conf->darkframe = NULL;
+ conf->darkframeFile[0] = '\0';
+ }
+}
+
void ufraw_close(ufraw_data *uf)
{
dcraw_close(uf->raw);
@@ -713,10 +724,6 @@
lf_modifier_destroy(uf->TCAmodifier);
lf_modifier_destroy(uf->modifier);
#endif
- if (uf->conf->darkframe != NULL) {
- ufraw_close(uf->conf->darkframe);
- g_free(uf->conf->darkframe);
- }
ufobject_delete(uf->conf->ufobject);
g_free(uf->conf);
ufraw_message_reset(uf);
Index: ufraw.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -d -r1.62 -r1.63
--- ufraw.c 20 Feb 2011 06:15:20 -0000 1.62
+++ ufraw.c 6 Nov 2011 03:30:55 -0000 1.63
@@ -119,6 +119,7 @@
}
status = ufraw_config(uf, &rc, &conf, &cmd);
if (status == UFRAW_ERROR) {
+ ufraw_close_darkframe(uf->conf);
ufraw_close(uf);
g_free(uf);
gdk_threads_leave();
Index: ufraw-batch.c
===================================================================
RCS file: /cvsroot/ufraw/ufraw/ufraw-batch.c,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- ufraw-batch.c 20 Feb 2011 06:15:20 -0000 1.40
+++ ufraw-batch.c 6 Nov 2011 03:30:55 -0000 1.41
@@ -75,12 +75,14 @@
uf->conf->createID = also_id;
if (status == UFRAW_ERROR) {
exitCode = 1;
+ ufraw_close_darkframe(uf->conf);
ufraw_close(uf);
g_free(uf);
exit(1);
}
if (ufraw_load_raw(uf) != UFRAW_SUCCESS) {
exitCode = 1;
+ ufraw_close_darkframe(uf->conf);
ufraw_close(uf);
g_free(uf);
continue;
@@ -99,6 +101,7 @@
} else {
exitCode = 1;
}
+ ufraw_close_darkframe(uf->conf);
ufraw_close(uf);
g_free(uf);
}
------------------------------------------------------------------------------
RSA(R) Conference 2012
Save $700 by Nov 18
Register now
http://p.sf.net/sfu/rsa-sfdev2dev1
_______________________________________________
ufraw-cvs mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ufraw-cvs