Date: Sunday, January 4, 2015 @ 00:26:20 Author: arojas Revision: 125258
Fix integer overflow on 64 bits systems Added: symmetrica/trunk/int32.patch Modified: symmetrica/trunk/PKGBUILD Deleted: symmetrica/trunk/macro.h.patch ---------------+ PKGBUILD | 10 +++++----- int32.patch | 37 +++++++++++++++++++++++++++++++++++++ macro.h.patch | 33 --------------------------------- 3 files changed, 42 insertions(+), 38 deletions(-) Modified: PKGBUILD =================================================================== --- PKGBUILD 2015-01-03 23:22:39 UTC (rev 125257) +++ PKGBUILD 2015-01-03 23:26:20 UTC (rev 125258) @@ -3,7 +3,7 @@ pkgname=symmetrica pkgver=2.0 -pkgrel=3 +pkgrel=4 pkgdesc="Algorithms for symmetric groups and classical groups" arch=('i686' 'x86_64') url="http://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA/" @@ -10,15 +10,15 @@ license=('custom') depends=() options=('staticlibs') -source=('http://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA/SYM2_0_tar.gz' - 'macro.h.patch' 'LICENSE') +source=('http://www.algorithm.uni-bayreuth.de/en/research/SYMMETRICA/SYM2_0_tar.gz' 'int32.patch' 'LICENSE') md5sums=('c901a30ffb44715adc85ec43a9838069' - '2a018908686a23ee12b3e7b5d104c929' + 'cc057ecdfc5f0d629d13f6b2999ba23c' 'c385bb47c0759cb6464e55702875b7a0') prepare() { sed -i -e 's/-O2/$(CFLAGS)/' makefile - patch -p0 -i macro.h.patch +# fix integer overflow on 64 bits + patch -p1 -i int32.patch # disable banner sed -i 's|no_banner = FALSE|no_banner = TRUE|' de.c Added: int32.patch =================================================================== --- int32.patch (rev 0) +++ int32.patch 2015-01-03 23:26:20 UTC (rev 125258) @@ -0,0 +1,37 @@ +diff -ru src/def.h c/def.h +--- src/def.h 2007-12-06 17:30:56.000000000 +0100 ++++ c/def.h 2013-10-19 18:42:55.118745730 +0200 +@@ -2,14 +2,9 @@ + /* INT should always be 4 byte */ + #ifndef DEF_H + +- +-#ifdef __alpha +-typedef int INT; +-typedef unsigned int UINT; +-#else /* __alpha */ +-typedef long INT; +-typedef unsigned long UINT; +-#endif /* __alpha */ ++#include <stdint.h> ++typedef int32_t INT; ++typedef uint32_t UINT; + + #include <stdio.h> + #include <memory.h> +@@ -65,10 +60,13 @@ + + + /* definitionen fuer object.c */ +-typedef INT OBJECTKIND; /* 4 byte */ ++/* NOTE: partition code assumes that there is no unused space in the ++ * object struct when an INT is stored. This requires both OBJECTKIND ++ * and OBJECTSELF to have a size equal to a machine word. */ ++typedef intptr_t OBJECTKIND; + + typedef union { +- INT ob_INT; ++ intptr_t ob_INT; + INT * ob_INTpointer; + char *ob_charpointer; + struct bruch *ob_bruch; Deleted: macro.h.patch =================================================================== --- macro.h.patch 2015-01-03 23:22:39 UTC (rev 125257) +++ macro.h.patch 2015-01-03 23:26:20 UTC (rev 125258) @@ -1,33 +0,0 @@ ---- macro.h.orig 2009-05-15 04:31:26.000000000 -0700 -+++ macro.h 2007-12-07 00:40:20.000000000 -0800 -@@ -171,7 +170,7 @@ - - - --extern INT partition_speichersize,partition_speicherindex,mem_counter_part; -+extern long partition_speichersize,partition_speicherindex,mem_counter_part; - extern struct partition **partition_speicher; - - #define FREEPARTITION(d)\ -@@ -266,7 +265,7 @@ - C_MO_K(c,b); \ - } while(0) - --extern INT monom_speicherindex,mem_counter_monom,monom_speichersize; -+extern long monom_speicherindex,mem_counter_monom,monom_speichersize; - extern struct monom **monom_speicher; - - #define FREEMONOM(v) \ -@@ -554,10 +553,10 @@ - - /* for longint */ - --extern INT loc_index, loc_size,loc_counter; -+extern long loc_index, loc_size,loc_counter; - extern struct loc **loc_speicher; - --extern INT longint_speicherindex,mem_counter_loc,longint_speichersize; -+extern long longint_speicherindex,mem_counter_loc,longint_speichersize; - extern struct longint **longint_speicher; - -