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

Reply via email to