The types used in FriBidi are incorrect when used on a 64 bit machine, long is used for 32 bits and is 64 bits on 64 bit machines. This bug was found when compiling geresh against fribidi on ia64 and alpha machines in the Debian archive.
Created attachment 1187 [details] [review] Use standard types that will work across platforms The best course of action to solve the bug is to use standard types that have specific size such as uint32_t, this will put the burden of making sure it is correct on others, namely glibc.
This bug makes abiword crash on amd64. Please fix it.
Sorry for that. I'll try to roll up a fix on 0.10 branch before weekend.
Is there any news on that bug? We (abiword team) are currently preparing a new major release (about 1 month off). It would be very good if we could depend on a new release of fribidi which includes this fix. Thanks!
Good point. I'm actually working on a new release on the stable branch that you guys are using. Updating to Unicode 4.1 and backporting lots of stuff from developmental... Will roll a tarball for testing this week surely. Moreover, if you guys can make Windows DLLs, I would be happy to host them. I once promised to try to build DLLs, but I don't have any access to a Windows machine these days.
Ok, we are almost there. Would you guys take some time to test: http://lists.freedesktop.org/archives/fribidi/2005-June/000401.html A final release would be out in a few hours.
In 0.10.5 already.
This bug still exists in 0.10.6 and above, hence I am reopening it.
I assume the changes, as suggested in the patch [attached below], have been rolled back in 0.10.6 and above. It is causing AbiWord to crash when build against fribidi 0.10.7. So, kindly look into this issue. Thanks in advance.
Are you cross-compiling? What's the contents of fribidi_config.h? 0.10.7 really cannot get it wrong. This is the relevant part of fribidi_types.h: #include "fribidi_config.h" #define FRIBIDI_INT8 char #if FRIBIDI_SIZEOF_INT+0 == 2 # define FRIBIDI_INT16 int #elif FRIBIDI_SIZEOF_SHORT+0 == 2 # define FRIBIDI_INT16 short #else # error cannot determine a 16-bit integer type. check fribidi_config.h #endif #if FRIBIDI_SIZEOF_INT+0 == 4 # define FRIBIDI_INT32 int #elif FRIBIDI_SIZEOF_LONG+0 == 4 # define FRIBIDI_INT32 long #else # error cannot determine a 32-bit integer type. check fribidi_config.h #endif typedef unsigned FRIBIDI_INT32 fribidi_uint32; typedef fribidi_uint32 FriBidiChar;
Baruch Even, Do you still experience this issue with newer soft? Please check the status of your issue.
I no longer maintain the debian package and my personal machine is 32bits these days so I have no way to check. Feel free to close if you think it is fixed.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.