better fix for big-endian architectures
[geeqie.git] / src / image_load_tiff.c
index fd938b5..07e6786 100644 (file)
@@ -50,13 +50,13 @@ struct _ImageLoaderTiff {
        ImageLoaderBackendCbAreaUpdated area_updated_cb;
        ImageLoaderBackendCbSize size_cb;
        ImageLoaderBackendCbAreaPrepared area_prepared_cb;
-       
+
        gpointer data;
 
        GdkPixbuf *pixbuf;
        guint requested_width;
        guint requested_height;
-       
+
        gboolean abort;
 
        const guchar *buffer;
@@ -245,7 +245,7 @@ static gboolean image_loader_tiff_load (gpointer loader, const guchar *buf, gsiz
                for (row = 0; row < height; row += rowsperstrip)
                        {
                        int rows_to_write, i_row;
-                       
+
                        if (lt->abort) {
                                break;
                        }
@@ -295,18 +295,21 @@ static gboolean image_loader_tiff_load (gpointer loader, const guchar *buf, gsiz
                /* Turns out that the packing used by TIFFRGBAImage depends on
                 * the host byte order...
                 */
-               while (pixels < lt->pixbuf->pixels + bytes)
+               {
+               guchar *ptr = pixels;
+               while (ptr < pixels + bytes)
                        {
-                       uint32 pixel = *(uint32 *)pixels;
+                       uint32 pixel = *(uint32 *)ptr;
                        int r = TIFFGetR(pixel);
                        int g = TIFFGetG(pixel);
                        int b = TIFFGetB(pixel);
                        int a = TIFFGetA(pixel);
-                       *pixels++ = r;
-                       *pixels++ = g;
-                       *pixels++ = b;
-                       *pixels++ = a;
+                       *ptr++ = r;
+                       *ptr++ = g;
+                       *ptr++ = b;
+                       *ptr++ = a;
                        }
+               }
 #endif
 
                lt->area_updated_cb(loader, 0, 0, width, height, lt->data);
@@ -381,7 +384,7 @@ void image_loader_backend_set_tiff(ImageLoaderBackend *funcs)
        funcs->close = image_loader_tiff_close;
        funcs->abort = image_loader_tiff_abort;
        funcs->free = image_loader_tiff_free;
-       
+
        funcs->get_format_name = image_loader_tiff_get_format_name;
        funcs->get_format_mime_types = image_loader_tiff_get_format_mime_types;
 }