[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r102781: Fix some resource leaks in I
From: |
Andreas Schwab |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r102781: Fix some resource leaks in ImageMagick image loader |
Date: |
Fri, 07 Jan 2011 23:33:32 +0100 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 102781
committer: Andreas Schwab <address@hidden>
branch nick: emacs
timestamp: Fri 2011-01-07 23:33:32 +0100
message:
Fix some resource leaks in ImageMagick image loader
* src/image.c (imagemagick_load_image): Fix some resource leaks and
error handling.
modified:
src/ChangeLog
src/image.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2011-01-07 17:34:02 +0000
+++ b/src/ChangeLog 2011-01-07 22:33:32 +0000
@@ -1,3 +1,8 @@
+2011-01-07 Andreas Schwab <address@hidden>
+
+ * image.c (imagemagick_load_image): Fix some resource leaks and
+ error handling.
+
2011-01-07 Chong Yidong <address@hidden>
* fns.c (Fyes_or_no_p): Accept format string args.
=== modified file 'src/image.c'
--- a/src/image.c 2011-01-03 19:35:59 +0000
+++ b/src/image.c 2011-01-07 22:33:32 +0000
@@ -1,7 +1,7 @@
/* Functions for image support on window system.
Copyright (C) 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
- 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
- Free Software Foundation, Inc.
+ 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
+ 2011 Free Software Foundation, Inc.
This file is part of GNU Emacs.
@@ -7561,9 +7561,15 @@
exception = AcquireExceptionInfo ();
im_image = ReadImage (image_info, exception);
- CatchException (exception);
+ DestroyExceptionInfo (exception);
- image_wand = NewMagickWandFromImage (im_image);
+ if (im_image != NULL)
+ {
+ image_wand = NewMagickWandFromImage (im_image);
+ status = MagickTrue;
+ }
+ else
+ status = MagickFalse;
}
else
{
@@ -7666,11 +7672,6 @@
width, height, and then transfer ownerwship to Emacs. */
height = MagickGetImageHeight (image_wand);
width = MagickGetImageWidth (image_wand);
- if (status == MagickFalse)
- {
- image_error ("Imagemagick image get size failed", Qnil, Qnil);
- goto imagemagick_error;
- }
if (! check_image_size (f, width, height))
{
@@ -7690,6 +7691,9 @@
if (!x_create_x_image_and_pixmap (f, width, height, 0,
&ximg, &img->pixmap))
{
+#ifdef COLOR_TABLE_SUPPORT
+ free_color_table ();
+#endif
image_error("Imagemagick X bitmap allocation failure", Qnil, Qnil);
goto imagemagick_error;
}
@@ -7702,6 +7706,10 @@
iterator = NewPixelIterator (image_wand);
if (iterator == (PixelIterator *) NULL)
{
+#ifdef COLOR_TABLE_SUPPORT
+ free_color_table ();
+#endif
+ x_destroy_x_image (ximg);
image_error ("Imagemagick pixel iterator creation failed",
Qnil, Qnil);
goto imagemagick_error;
@@ -7736,6 +7744,9 @@
if (!x_create_x_image_and_pixmap (f, width, height, imagedepth,
&ximg, &img->pixmap))
{
+#ifdef COLOR_TABLE_SUPPORT
+ free_color_table ();
+#endif
image_error("Imagemagick X bitmap allocation failure", Qnil, Qnil);
goto imagemagick_error;
}
@@ -7798,6 +7809,7 @@
return 1;
imagemagick_error:
+ DestroyMagickWand (image_wand);
/* TODO more cleanup. */
image_error ("Error parsing IMAGEMAGICK image `%s'", img->spec, Qnil);
return 0;
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r102781: Fix some resource leaks in ImageMagick image loader,
Andreas Schwab <=