Author: post
Date: 2010-04-05 18:15:28 +0200 (Mon, 05 Apr 2010)
New Revision: 3344
Modified:
trunk/plugins/input-file/input-file.c
trunk/plugins/load-dcraw/dcrawloader.c
trunk/plugins/load-gdk/load-gdk.c
trunk/plugins/load-rawspeed/rawstudio-plugin-api.cpp
Log:
Better safety in new load routines.
Modified: trunk/plugins/input-file/input-file.c
===================================================================
--- trunk/plugins/input-file/input-file.c 2010-04-05 16:14:20 UTC (rev
3343)
+++ trunk/plugins/input-file/input-file.c 2010-04-05 16:15:28 UTC (rev
3344)
@@ -126,10 +126,13 @@
g_object_unref(input->image);
input->image = NULL;
RSFilterResponse *response =
rs_filetype_load(input->filename);
- if (rs_filter_response_has_image(response))
- input->image =
rs_filter_response_get_image(response);
- g_object_unref(response);
- rs_filter_changed(RS_FILTER(input),
RS_FILTER_CHANGED_DIMENSION);
+ if (response && RS_IS_FILTER_RESPONSE(response))
+ {
+ if (rs_filter_response_has_image(response))
+ input->image =
rs_filter_response_get_image(response);
+ g_object_unref(response);
+ rs_filter_changed(RS_FILTER(input),
RS_FILTER_CHANGED_DIMENSION);
+ }
break;
case PROP_COLOR_SPACE:
if (input->colorspace)
@@ -151,8 +154,11 @@
if (RS_IS_COLOR_SPACE(input->colorspace))
rs_filter_param_set_object(RS_FILTER_PARAM(response),
"colorspace", input->colorspace);
- rs_filter_response_set_image(response, input->image);
- g_object_unref(input->image);
+ if (input->image)
+ {
+ rs_filter_response_set_image(response, input->image);
+ g_object_unref(input->image);
+ }
return response;
}
Modified: trunk/plugins/load-dcraw/dcrawloader.c
===================================================================
--- trunk/plugins/load-dcraw/dcrawloader.c 2010-04-05 16:14:20 UTC (rev
3343)
+++ trunk/plugins/load-dcraw/dcrawloader.c 2010-04-05 16:15:28 UTC (rev
3344)
@@ -192,10 +192,13 @@
rs_io_unlock();
g_free(raw);
- rs_filter_response_set_image(response, image);
- rs_filter_response_set_width(response, image->w);
- rs_filter_response_set_height(response, image->h);
- g_object_unref(image);
+ if (image)
+ {
+ rs_filter_response_set_image(response, image);
+ rs_filter_response_set_width(response, image->w);
+ rs_filter_response_set_height(response, image->h);
+ g_object_unref(image);
+ }
return response;
}
Modified: trunk/plugins/load-gdk/load-gdk.c
===================================================================
--- trunk/plugins/load-gdk/load-gdk.c 2010-04-05 16:14:20 UTC (rev 3343)
+++ trunk/plugins/load-gdk/load-gdk.c 2010-04-05 16:15:28 UTC (rev 3344)
@@ -63,10 +63,13 @@
}
RSFilterResponse* response = rs_filter_response_new();
- rs_filter_response_set_image(response, image);
- rs_filter_response_set_width(response, image->w);
- rs_filter_response_set_height(response, image->h);
- g_object_unref(image);
+ if (image)
+ {
+ rs_filter_response_set_image(response, image);
+ rs_filter_response_set_width(response, image->w);
+ rs_filter_response_set_height(response, image->h);
+ g_object_unref(image);
+ }
return response;
}
Modified: trunk/plugins/load-rawspeed/rawstudio-plugin-api.cpp
===================================================================
--- trunk/plugins/load-rawspeed/rawstudio-plugin-api.cpp 2010-04-05
16:14:20 UTC (rev 3343)
+++ trunk/plugins/load-rawspeed/rawstudio-plugin-api.cpp 2010-04-05
16:15:28 UTC (rev 3344)
@@ -41,7 +41,7 @@
c = new CameraMetaData(path);
} catch (CameraMetadataException e) {
printf("RawSpeed: Could not open camera metadata
information.\n%s\nRawSpeed will not be used!\n", e.what());
- return NULL;
+ return rs_filter_response_new();
}
g_free(path);
}
@@ -107,7 +107,7 @@
image = rs_image16_new(r->dim.x, r->dim.y, 3,
4);
else {
printf("RawSpeed: Unsupported component per
pixel count\n");
- return NULL;
+ return rs_filter_response_new();
}
if (r->isCFA)
@@ -148,10 +148,13 @@
if (m) delete m;
RSFilterResponse* response = rs_filter_response_new();
- rs_filter_response_set_image(response, image);
- rs_filter_response_set_width(response, image->w);
- rs_filter_response_set_height(response, image->h);
- g_object_unref(image);
+ if (image)
+ {
+ rs_filter_response_set_image(response, image);
+ rs_filter_response_set_width(response, image->w);
+ rs_filter_response_set_height(response, image->h);
+ g_object_unref(image);
+ }
return response;
}
_______________________________________________
Rawstudio-commit mailing list
[email protected]
http://rawstudio.org/cgi-bin/mailman/listinfo/rawstudio-commit