[libchamplain] Proper handling of GError in pixbuf_new_from_message() and texture_new_from_pixbuf()



commit 49c3f67aa1b6b51273d3e1057c2611278f08cb04
Author: Emmanuel Rodriguez <emmanuel rodriguez gmail com>
Date:   Sun May 17 20:25:06 2009 +0200

    Proper handling of GError in pixbuf_new_from_message() and texture_new_from_pixbuf()

 demos/url-marker.c |   36 +++++++++++++++---------------------
 1 files changed, 15 insertions(+), 21 deletions(-)
---
diff --git a/demos/url-marker.c b/demos/url-marker.c
index d9c0163..95f8338 100644
--- a/demos/url-marker.c
+++ b/demos/url-marker.c
@@ -45,7 +45,7 @@ pixbuf_new_from_message (SoupMessage *message, GError **error)
   GdkPixbuf *pixbuf = NULL;
   gboolean pixbuf_is_open = FALSE;
 
-  error = NULL;
+  *error = NULL;
 
   /*  Use a pixbuf loader that can load images of the same mime-type as the
       message.
@@ -54,7 +54,7 @@ pixbuf_new_from_message (SoupMessage *message, GError **error)
       "Content-Type");
   loader = gdk_pixbuf_loader_new_with_mime_type (mime_type, error);
   if (loader != NULL) pixbuf_is_open = TRUE;
-  if (error != NULL) goto cleanup;
+  if (*error != NULL) goto cleanup;
 
 
   gdk_pixbuf_loader_write (
@@ -62,22 +62,19 @@ pixbuf_new_from_message (SoupMessage *message, GError **error)
     message->response_body->data,
     message->response_body->length, 
     error);
-  if (error != NULL) goto cleanup;
+  if (*error != NULL) goto cleanup;
 
   gdk_pixbuf_loader_close (loader, error);
   pixbuf_is_open = FALSE;
-  if (error != NULL) goto cleanup;
+  if (*error != NULL) goto cleanup;
 
   pixbuf = gdk_pixbuf_loader_get_pixbuf (loader);
   if (pixbuf == NULL) goto cleanup;
   g_object_ref (G_OBJECT (pixbuf));
   
-  /* Cleanup part, the function will always exit here even in case of error */
-  cleanup:
-    {
-      if (pixbuf_is_open) gdk_pixbuf_loader_close (loader, NULL);
-      if (loader != NULL) g_object_unref (G_OBJECT (loader));
-    }
+cleanup:
+  if (pixbuf_is_open) gdk_pixbuf_loader_close (loader, NULL);
+  if (loader != NULL) g_object_unref (G_OBJECT (loader));
   return pixbuf;
 }
 
@@ -98,7 +95,7 @@ texture_new_from_pixbuf (GdkPixbuf *pixbuf, GError **error)
   int width, height, rowstride;
   ClutterTextureFlags flags = 0;
 
-  error = NULL;
+  *error = NULL;
 
   data = gdk_pixbuf_get_pixels (pixbuf);
   width = gdk_pixbuf_get_width (pixbuf);
@@ -181,16 +178,13 @@ image_downloaded_cb (SoupSession *session,
   clutter_container_add (CLUTTER_CONTAINER (marker_data->layer), marker, NULL);
   clutter_actor_show_all (marker);
 
-  /* Cleanup part, the function will always exit here even in case of error */
-  cleanup:
-    {
-      g_object_unref (marker_data->layer);
-      g_free (marker_data);
-      g_free (url);
-      if (error != NULL) g_error_free (error);
-      if (pixbuf != NULL) g_object_unref (G_OBJECT (pixbuf));
-      if (texture != NULL) clutter_actor_destroy (CLUTTER_ACTOR (texture));
-    }
+cleanup:
+  g_object_unref (marker_data->layer);
+  g_free (marker_data);
+  g_free (url);
+  if (error != NULL) g_error_free (error);
+  if (pixbuf != NULL) g_object_unref (G_OBJECT (pixbuf));
+  if (texture != NULL) clutter_actor_destroy (CLUTTER_ACTOR (texture));
 }
 
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]