From 278737f6381baa2bef0625899b6df7e10768a610 Mon Sep 17 00:00:00 2001 From: giraffedata Date: Sat, 13 Aug 2016 01:39:59 +0000 Subject: Release 10.75.01 git-svn-id: http://svn.code.sf.net/p/netpbm/code/advanced@2811 9d0c8265-081b-0410-96cb-a4ca84ce46f8 --- converter/other/giftopnm.c | 9 ++------- doc/HISTORY | 6 ++++++ pm_config.in.h | 11 ++++++++--- version.mk | 2 +- 4 files changed, 17 insertions(+), 11 deletions(-) diff --git a/converter/other/giftopnm.c b/converter/other/giftopnm.c index 2e6ae1d9..76cf4bff 100644 --- a/converter/other/giftopnm.c +++ b/converter/other/giftopnm.c @@ -24,6 +24,7 @@ #include #include +#include "pm_config.h" #include "pm_c_util.h" #include "mallocvar.h" #include "nstring.h" @@ -39,12 +40,6 @@ #define MAX_LZW_BITS 12 -#if !defined(BYTE_ORDER) || !defined(LITTLE_ENDIAN) - /* make sure (BYTE_ORDER == LITTLE_ENDIAN) is FALSE */ - #define BYTE_ORDER 0 - #define LITTLE_ENDIAN 1 -#endif - #ifndef FASTPBMRENDER #define FASTPBMRENDER TRUE #endif @@ -684,7 +679,7 @@ bitsOfLeBuffer(const unsigned char * const buf, assert(len <= 16); - if (BYTE_ORDER == LITTLE_ENDIAN) + if (BYTE_ORDER == LITTLE_ENDIAN && UNALIGNED_OK) /* Fast path */ codeBlock = *(uint32_t *) & buf[start/8]; else diff --git a/doc/HISTORY b/doc/HISTORY index 6d43d7cb..97c7acb4 100644 --- a/doc/HISTORY +++ b/doc/HISTORY @@ -4,6 +4,12 @@ Netpbm. CHANGE HISTORY -------------- +16.08.13 BJH Release 10.75.01 + + giftopnm: Fix bug: crash on little-endian computers that can't + toleration unaligned memory access. Thanks Ignatios Souvatzis + (is@netbsd.org). Broken in Netpbm 10.47 (June 2009). + 16.06.26 BJH Release 10.75.00 pbmtextps: Add -leftmargin, -rightmargin, -topmargin, diff --git a/pm_config.in.h b/pm_config.in.h index 72cb477e..d156127e 100644 --- a/pm_config.in.h +++ b/pm_config.in.h @@ -257,12 +257,17 @@ /* UNALIGNED_OK means it's OK to do unaligned memory access, e.g. loading an 8-byte word from an address that is not a multiple of 8. On some systems, such an access causes a trap and a signal. + + This determination is conservative - There may be cases where unaligned + access is OK and we say here it isn't. + + We know unaligned access is _not_ OK on at least SPARC and some ARM. */ -#if defined(__sparc__) -# define UNALIGNED_OK 0 -#else +#if defined(__x86_64__) | defined(__i486__) | defined(__vax__) # define UNALIGNED_OK 1 +#else +# define UNALIGNED_OK 0 #endif diff --git a/version.mk b/version.mk index 319622cd..fc99db50 100644 --- a/version.mk +++ b/version.mk @@ -1,3 +1,3 @@ NETPBM_MAJOR_RELEASE = 10 NETPBM_MINOR_RELEASE = 75 -NETPBM_POINT_RELEASE = 0 +NETPBM_POINT_RELEASE = 1 -- cgit 1.4.1