gimp nie otwiera mi pliku bmp który przedstawia się tak:

$file /tmp/gconfd-kon/1.bmp
/tmp/gconfd-kon/1.bmp: PC bitmap data, Windows 3.x format, 2550 x 3508 x 8

w konsoli: 

(...)
/usr/lib/gimp/2.0/plug-ins/bmp: fatal error: Naruszenie ochrony pamięci


w gimp-2.0.4 i 2.0.5 jest wszystko ok.

Co mogli spierniczyc, diff zrodeł w zalaczniku.
diff -urN gimp-2.0.5/plug-ins/bmp/Makefile.in gimp-2.0.6/plug-ins/bmp/Makefile.in
--- gimp-2.0.5/plug-ins/bmp/Makefile.in	2004-09-24 22:13:16.000000000 +0000
+++ gimp-2.0.6/plug-ins/bmp/Makefile.in	2004-11-02 19:04:38.000000000 +0000
@@ -163,6 +163,7 @@
 HAVE_LCMS_FALSE = @HAVE_LCMS_FALSE@
 HAVE_LCMS_TRUE = @HAVE_LCMS_TRUE@
 HTML_DIR = @HTML_DIR@
+ICONV = @ICONV@
 INSTALL_DATA = @INSTALL_DATA@
 INSTALL_PROGRAM = @INSTALL_PROGRAM@
 INSTALL_SCRIPT = @INSTALL_SCRIPT@
@@ -173,6 +174,7 @@
 INTLTOOL_DESKTOP_RULE = @INTLTOOL_DESKTOP_RULE@
 INTLTOOL_DIRECTORY_RULE = @INTLTOOL_DIRECTORY_RULE@
 INTLTOOL_EXTRACT = @INTLTOOL_EXTRACT@
+INTLTOOL_KBD_RULE = @INTLTOOL_KBD_RULE@
 INTLTOOL_KEYS_RULE = @INTLTOOL_KEYS_RULE@
 INTLTOOL_MERGE = @INTLTOOL_MERGE@
 INTLTOOL_OAF_RULE = @INTLTOOL_OAF_RULE@
@@ -222,6 +224,7 @@
 MKINSTALLDIRS = @MKINSTALLDIRS@
 MNG = @MNG@
 MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
 MS_LIB_AVAILABLE_FALSE = @MS_LIB_AVAILABLE_FALSE@
 MS_LIB_AVAILABLE_TRUE = @MS_LIB_AVAILABLE_TRUE@
 OBJDUMP = @OBJDUMP@
diff -urN gimp-2.0.5/plug-ins/bmp/bmpread.c gimp-2.0.6/plug-ins/bmp/bmpread.c
--- gimp-2.0.5/plug-ins/bmp/bmpread.c	2004-08-05 18:31:48.000000000 +0000
+++ gimp-2.0.6/plug-ins/bmp/bmpread.c	2004-11-02 19:02:56.000000000 +0000
@@ -413,18 +413,20 @@
 	   gboolean  grey,
 	   const Bitmap_Channel *masks)
 {
-  guchar        v, n;
-  GimpPixelRgn  pixel_rgn;
-  gint          xpos = 0;
-  gint          ypos = 0;
-  gint32        image;
-  gint32        layer;
-  GimpDrawable *drawable;
-  guchar       *dest, *temp, *buffer;
-  guchar        gimp_cmap[768];
-  gushort       rgb;
-  glong         rowstride, channels;
-  gint          i, j, cur_progress, max_progress;
+  guchar             v, n;
+  GimpPixelRgn       pixel_rgn;
+  gint               xpos = 0;
+  gint               ypos = 0;
+  gint32             image;
+  gint32             layer;
+  GimpDrawable      *drawable;
+  guchar            *dest, *temp, *buffer;
+  guchar             gimp_cmap[768];
+  gushort            rgb;
+  glong              rowstride, channels;
+  gint               i, j, cur_progress, max_progress;
+  GimpImageBaseType  base_type;
+  GimpImageType      image_type;
 
   if (! (compression == BI_RGB ||
       (bpp == 8 && compression == BI_RLE8) ||
@@ -438,31 +440,44 @@
 
   /* Make a new image in the gimp */
 
-  if (bpp >= 16)
+  switch (bpp)
     {
-      image = gimp_image_new (width, height, GIMP_RGB);
-      layer = gimp_layer_new (image, _("Background"),
-                              width, height,
-                              GIMP_RGB_IMAGE, 100, GIMP_NORMAL_MODE);
+    case 32:
+    case 24:
+    case 16:
+      base_type = GIMP_RGB;
+      image_type = GIMP_RGB_IMAGE;
+
       channels = 3;
-    }
-  else if (grey)
-    {
-      image = gimp_image_new (width, height, GIMP_GRAY);
-      layer = gimp_layer_new (image, _("Background"),
-			      width, height,
-                              GIMP_GRAY_IMAGE, 100, GIMP_NORMAL_MODE);
-      channels = 1;
-    }
-  else
-    {
-      image = gimp_image_new (width, height, GIMP_INDEXED);
-      layer = gimp_layer_new (image, _("Background"),
-                              width, height,
-                              GIMP_INDEXED_IMAGE, 100, GIMP_NORMAL_MODE);
+      break;
+
+    case 8:
+    case 4:
+    case 1:
+      if (grey)
+        {
+          base_type = GIMP_GRAY;
+          image_type = GIMP_RGB_IMAGE;
+        }
+      else
+        {
+          base_type = GIMP_INDEXED;
+          image_type = GIMP_INDEXED_IMAGE;
+        }
+
       channels = 1;
+      break;
+
+    default:
+      g_message (_("Unrecognized or invalid BMP compression format."));
+      return -1;
     }
 
+  image = gimp_image_new (width, height, base_type);
+  layer = gimp_layer_new (image, _("Background"),
+                          width, height,
+                          image_type, 100, GIMP_NORMAL_MODE);
+
   gimp_image_set_filename (image, filename);
 
   gimp_image_add_layer (image, layer, 0);
_______________________________________________
pld-devel-pl mailing list
[EMAIL PROTECTED]
http://lists.pld-linux.org/mailman/listinfo/pld-devel-pl

Odpowiedź listem elektroniczym