Last active
August 29, 2015 14:05
-
-
Save danielappelt/b39f8857b7995cda7cb4 to your computer and use it in GitHub Desktop.
GDK PixbufLoader problem with TIFF files in 32bit mode on x86_64 linux
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CFLAGS = `pkg-config --cflags glib-2.0 gtk+-2.0` | |
LDFLAGS = `pkg-config --libs glib-2.0 gtk+-2.0` | |
pixbuf: pixbuf.c pixbufloader.c | |
gcc -Wall pixbuf.c -o pixbuf $(CFLAGS) $(LDFLAGS) | |
gcc -m32 -Wall pixbuf.c -o pixbuf32 $(CFLAGS) $(LDFLAGS) | |
gcc -Wall pixbufloader.c -o pixbufloader $(CFLAGS) $(LDFLAGS) | |
gcc -m32 -Wall pixbufloader.c -o pixbufloader32 $(CFLAGS) $(LDFLAGS) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <gtk/gtk.h> | |
#include <gdk-pixbuf/gdk-pixbuf.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <stdio.h> | |
int main(int argc, char *argv[]) { | |
GError *gerror; | |
GdkPixbuf *originalpb; | |
char filename[64]; | |
gtk_set_locale(); | |
gtk_init(&argc, &argv); | |
strcpy(filename, argv[1]); | |
gerror = NULL; | |
originalpb = gdk_pixbuf_new_from_file(filename, &gerror); | |
if(gerror) { | |
printf("error message: %s\n", gerror->message); | |
exit(1); | |
} | |
printf("size: %d x %d\n", | |
gdk_pixbuf_get_width(originalpb), | |
gdk_pixbuf_get_height(originalpb)); | |
g_object_unref(originalpb); | |
return 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <gtk/gtk.h> | |
#include <gdk-pixbuf/gdk-pixbuf.h> | |
#include <stdlib.h> | |
#include <string.h> | |
#include <stdio.h> | |
GdkPixbuf * test_pixbuf_loader(char *filename, GError **gerrorptr1, GError **gerrorptr2) { | |
GdkPixbuf *pixbuf; | |
GdkPixbufLoader *loader; | |
FILE *file; | |
size_t datalen; | |
int done; | |
guint8 buffer[65536]; | |
pixbuf = NULL; | |
loader = gdk_pixbuf_loader_new(); | |
done = 0; | |
file = fopen(filename, "rb"); | |
while (1) { | |
datalen = fread(buffer, 1, sizeof(buffer), file); | |
printf("datalen: %i\n", (int)datalen); | |
if (datalen == 0) { | |
done = 1; | |
break; | |
} | |
if (!gdk_pixbuf_loader_write(loader, buffer, datalen, gerrorptr1)) { | |
break; | |
} | |
} | |
fclose(file); | |
if (done && gdk_pixbuf_loader_close(loader, gerrorptr2)) { | |
pixbuf = gdk_pixbuf_loader_get_pixbuf(loader); | |
if (!pixbuf) { | |
printf("No pixbuf\n"); | |
exit(1); | |
} | |
g_object_ref(pixbuf); | |
} | |
g_object_unref(loader); | |
return pixbuf; | |
} | |
int main(int argc, char *argv[]) { | |
GError *gerror1, *gerror2; | |
GdkPixbuf *originalpb; | |
char filename[64]; | |
gtk_set_locale(); | |
gtk_init(&argc, &argv); | |
strcpy(filename, argv[1]); | |
gerror1 = gerror2 = NULL; | |
originalpb = test_pixbuf_loader(filename, &gerror1, &gerror2); | |
if(gerror1) { | |
printf("error message 1: %s\n", gerror1->message); | |
exit(1); | |
} | |
if(gerror2) { | |
printf("error message 2: %s\n", gerror2->message); | |
exit(1); | |
} | |
printf("size: %d x %d\n", | |
gdk_pixbuf_get_width(originalpb), | |
gdk_pixbuf_get_height(originalpb)); | |
g_object_unref(originalpb); | |
return 0; | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
[daniel@tallinn pixbufloader]$ ./pixbuf initgraph.tif | |
size: 427 x 405 | |
[daniel@tallinn pixbufloader]$ ./pixbuf32 initgraph.tif | |
size: 427 x 405 | |
[daniel@tallinn pixbufloader]$ ./pixbufloader initgraph.tif | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 60552 | |
datalen: 0 | |
size: 427 x 405 | |
[daniel@tallinn pixbufloader]$ ./pixbufloader32 initgraph.tif | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 60552 | |
datalen: 0 | |
error message 2: TIFF-Bild konnte nicht geladen werden | |
[daniel@tallinn pixbufloader]$ ./pixbufloader initgraph.jpg | |
datalen: 26294 | |
datalen: 0 | |
size: 427 x 405 | |
[daniel@tallinn pixbufloader]$ ./pixbufloader32 initgraph.jpg | |
datalen: 26294 | |
datalen: 0 | |
size: 427 x 405 | |
[daniel@tallinn pixbufloader]$ ./pixbufloader initgraph.png | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 1247 | |
datalen: 0 | |
size: 427 x 405 | |
[daniel@tallinn pixbufloader]$ ./pixbufloader32 initgraph.png | |
datalen: 65536 | |
datalen: 65536 | |
datalen: 1247 | |
datalen: 0 | |
size: 427 x 405 | |
[daniel@tallinn pixbufloader]$ ldd pixbufloader | |
linux-vdso.so.1 (0x00007fff41ae0000) | |
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x00007f6a8c30a000) | |
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x00007f6a8c055000) | |
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007f6a8be48000) | |
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x00007f6a8bc22000) | |
libcairo.so.2 => /usr/lib/libcairo.so.2 (0x00007f6a8b8f6000) | |
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x00007f6a8b6d2000) | |
libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x00007f6a8b361000) | |
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x00007f6a8b14b000) | |
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00007f6a8aeff000) | |
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007f6a8acaf000) | |
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007f6a8a9a7000) | |
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00007f6a8a76a000) | |
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007f6a8a4ab000) | |
libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f6a8a28d000) | |
libc.so.6 => /usr/lib/libc.so.6 (0x00007f6a89edf000) | |
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007f6a89cdb000) | |
libX11.so.6 => /usr/lib/libX11.so.6 (0x00007f6a89999000) | |
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007f6a89793000) | |
libm.so.6 => /usr/lib/libm.so.6 (0x00007f6a8948f000) | |
libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00007f6a89285000) | |
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00007f6a89082000) | |
libXi.so.6 => /usr/lib/libXi.so.6 (0x00007f6a88e71000) | |
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x00007f6a88c67000) | |
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x00007f6a88a5c000) | |
libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0x00007f6a88859000) | |
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00007f6a88656000) | |
libXext.so.6 => /usr/lib/libXext.so.6 (0x00007f6a88444000) | |
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007f6a88242000) | |
libharfbuzz.so.0 => /usr/lib/libharfbuzz.so.0 (0x00007f6a87fea000) | |
libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x00007f6a87d3d000) | |
libEGL.so.1 => /usr/lib/libEGL.so.1 (0x00007f6a87b19000) | |
libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f6a87915000) | |
libpng16.so.16 => /usr/lib/libpng16.so.16 (0x00007f6a876df000) | |
libxcb-shm.so.0 => /usr/lib/libxcb-shm.so.0 (0x00007f6a874db000) | |
libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0x00007f6a872d1000) | |
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007f6a870af000) | |
libz.so.1 => /usr/lib/libz.so.1 (0x00007f6a86e99000) | |
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007f6a86c29000) | |
librt.so.1 => /usr/lib/librt.so.1 (0x00007f6a86a21000) | |
libffi.so.6 => /usr/lib/libffi.so.6 (0x00007f6a86819000) | |
libpcre.so.1 => /usr/lib/libpcre.so.1 (0x00007f6a865af000) | |
libresolv.so.2 => /usr/lib/libresolv.so.2 (0x00007f6a86398000) | |
libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007f6a8616e000) | |
libbz2.so.1.0 => /usr/lib/libbz2.so.1.0 (0x00007f6a85f5e000) | |
/lib64/ld-linux-x86-64.so.2 (0x00007f6a8c94d000) | |
libgraphite2.so.3 => /usr/lib/libgraphite2.so.3 (0x00007f6a85d40000) | |
libX11-xcb.so.1 => /usr/lib/libX11-xcb.so.1 (0x00007f6a85b3e000) | |
libxcb-dri2.so.0 => /usr/lib/libxcb-dri2.so.0 (0x00007f6a85939000) | |
libxcb-xfixes.so.0 => /usr/lib/libxcb-xfixes.so.0 (0x00007f6a85731000) | |
libxcb-shape.so.0 => /usr/lib/libxcb-shape.so.0 (0x00007f6a8552d000) | |
libgbm.so.1 => /usr/lib/libgbm.so.1 (0x00007f6a85325000) | |
libwayland-client.so.0 => /usr/lib/libwayland-client.so.0 (0x00007f6a85117000) | |
libwayland-server.so.0 => /usr/lib/libwayland-server.so.0 (0x00007f6a84f05000) | |
libglapi.so.0 => /usr/lib/libglapi.so.0 (0x00007f6a84cdc000) | |
libdrm.so.2 => /usr/lib/libdrm.so.2 (0x00007f6a84acf000) | |
libXau.so.6 => /usr/lib/libXau.so.6 (0x00007f6a848cb000) | |
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007f6a846c5000) | |
libxcb-glx.so.0 => /usr/lib/libxcb-glx.so.0 (0x00007f6a844ab000) | |
libxcb-dri3.so.0 => /usr/lib/libxcb-dri3.so.0 (0x00007f6a842a8000) | |
libxcb-present.so.0 => /usr/lib/libxcb-present.so.0 (0x00007f6a840a5000) | |
libxcb-randr.so.0 => /usr/lib/libxcb-randr.so.0 (0x00007f6a83e97000) | |
libxcb-sync.so.1 => /usr/lib/libxcb-sync.so.1 (0x00007f6a83c90000) | |
libxshmfence.so.1 => /usr/lib/libxshmfence.so.1 (0x00007f6a83a8d000) | |
libXxf86vm.so.1 => /usr/lib/libXxf86vm.so.1 (0x00007f6a83887000) | |
[daniel@tallinn pixbufloader]$ ldd pixbufloader32 | |
linux-gate.so.1 (0xf779b000) | |
libgtk-x11-2.0.so.0 => /usr/lib32/libgtk-x11-2.0.so.0 (0xf727e000) | |
libgdk-x11-2.0.so.0 => /usr/lib32/libgdk-x11-2.0.so.0 (0xf71bf000) | |
libpangocairo-1.0.so.0 => /usr/lib32/libpangocairo-1.0.so.0 (0xf71b1000) | |
libatk-1.0.so.0 => /usr/lib32/libatk-1.0.so.0 (0xf718d000) | |
libcairo.so.2 => /usr/lib32/libcairo.so.2 (0xf7056000) | |
libgdk_pixbuf-2.0.so.0 => /usr/lib32/libgdk_pixbuf-2.0.so.0 (0xf702d000) | |
libgio-2.0.so.0 => /usr/lib32/libgio-2.0.so.0 (0xf6eaf000) | |
libpangoft2-1.0.so.0 => /usr/lib32/libpangoft2-1.0.so.0 (0xf6e98000) | |
libpango-1.0.so.0 => /usr/lib32/libpango-1.0.so.0 (0xf6e47000) | |
libgobject-2.0.so.0 => /usr/lib32/libgobject-2.0.so.0 (0xf6df5000) | |
libglib-2.0.so.0 => /usr/lib32/libglib-2.0.so.0 (0xf6cea000) | |
libfontconfig.so.1 => /usr/lib32/libfontconfig.so.1 (0xf6cae000) | |
libfreetype.so.6 => /usr/lib32/libfreetype.so.6 (0xf6bf3000) | |
libpthread.so.0 => /usr/lib32/libpthread.so.0 (0xf6bd6000) | |
libc.so.6 => /usr/lib32/libc.so.6 (0xf6a13000) | |
libgmodule-2.0.so.0 => /usr/lib32/libgmodule-2.0.so.0 (0xf6a0e000) | |
libX11.so.6 => /usr/lib32/libX11.so.6 (0xf68d7000) | |
libXfixes.so.3 => /usr/lib32/libXfixes.so.3 (0xf68d1000) | |
libm.so.6 => /usr/lib32/libm.so.6 (0xf6885000) | |
libXrender.so.1 => /usr/lib32/libXrender.so.1 (0xf6879000) | |
libXinerama.so.1 => /usr/lib32/libXinerama.so.1 (0xf6875000) | |
libXi.so.6 => /usr/lib32/libXi.so.6 (0xf6862000) | |
libXrandr.so.2 => /usr/lib32/libXrandr.so.2 (0xf6857000) | |
libXcursor.so.1 => /usr/lib32/libXcursor.so.1 (0xf684c000) | |
libXcomposite.so.1 => /usr/lib32/libXcomposite.so.1 (0xf6847000) | |
libXdamage.so.1 => /usr/lib32/libXdamage.so.1 (0xf6843000) | |
libXext.so.6 => /usr/lib32/libXext.so.6 (0xf682e000) | |
libgthread-2.0.so.0 => /usr/lib32/libgthread-2.0.so.0 (0xf682b000) | |
libharfbuzz.so.0 => /usr/lib32/libharfbuzz.so.0 (0xf67cf000) | |
libpixman-1.so.0 => /usr/lib32/libpixman-1.so.0 (0xf671b000) | |
libEGL.so.1 => /usr/lib32/libEGL.so.1 (0xf66f4000) | |
libdl.so.2 => /usr/lib32/libdl.so.2 (0xf66ef000) | |
libpng16.so.16 => /usr/lib32/libpng16.so.16 (0xf66b1000) | |
libxcb-shm.so.0 => /usr/lib32/libxcb-shm.so.0 (0xf66ad000) | |
libxcb-render.so.0 => /usr/lib32/libxcb-render.so.0 (0xf66a1000) | |
libxcb.so.1 => /usr/lib32/libxcb.so.1 (0xf667b000) | |
libz.so.1 => /usr/lib32/libz.so.1 (0xf6664000) | |
libGL.so.1 => /usr/lib32/libGL.so.1 (0xf65f7000) | |
librt.so.1 => /usr/lib32/librt.so.1 (0xf65ee000) | |
libffi.so.6 => /usr/lib32/libffi.so.6 (0xf65e5000) | |
libpcre.so.1 => /usr/lib32/libpcre.so.1 (0xf6577000) | |
libresolv.so.2 => /usr/lib32/libresolv.so.2 (0xf655f000) | |
libexpat.so.1 => /usr/lib32/libexpat.so.1 (0xf6536000) | |
libbz2.so.1.0 => /usr/lib32/libbz2.so.1.0 (0xf6525000) | |
/lib/ld-linux.so.2 (0xf779e000) | |
libX11-xcb.so.1 => /usr/lib32/libX11-xcb.so.1 (0xf6521000) | |
libxcb-dri2.so.0 => /usr/lib32/libxcb-dri2.so.0 (0xf651b000) | |
libxcb-xfixes.so.0 => /usr/lib32/libxcb-xfixes.so.0 (0xf6512000) | |
libxcb-shape.so.0 => /usr/lib32/libxcb-shape.so.0 (0xf650d000) | |
libgbm.so.1 => /usr/lib32/libgbm.so.1 (0xf6504000) | |
libwayland-client.so.0 => /usr/lib32/libwayland-client.so.0 (0xf64f7000) | |
libwayland-server.so.0 => /usr/lib32/libwayland-server.so.0 (0xf64e6000) | |
libglapi.so.0 => /usr/lib32/libglapi.so.0 (0xf64cc000) | |
libdrm.so.2 => /usr/lib32/libdrm.so.2 (0xf64bd000) | |
libXau.so.6 => /usr/lib32/libXau.so.6 (0xf64b9000) | |
libXdmcp.so.6 => /usr/lib32/libXdmcp.so.6 (0xf64b1000) | |
libxcb-glx.so.0 => /usr/lib32/libxcb-glx.so.0 (0xf6496000) | |
libxcb-dri3.so.0 => /usr/lib32/libxcb-dri3.so.0 (0xf6492000) | |
libxcb-present.so.0 => /usr/lib32/libxcb-present.so.0 (0xf648e000) | |
libxcb-randr.so.0 => /usr/lib32/libxcb-randr.so.0 (0xf647e000) | |
libxcb-sync.so.1 => /usr/lib32/libxcb-sync.so.1 (0xf6475000) | |
libxshmfence.so.1 => /usr/lib32/libxshmfence.so.1 (0xf6472000) | |
libXxf86vm.so.1 => /usr/lib32/libXxf86vm.so.1 (0xf646c000) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment