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 ufraw-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ufraw-cvs