commit:     4b15c5b4c9dfc8a96753928dd2a73c3ffc76330c
Author:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
AuthorDate: Fri Jun 30 11:29:43 2023 +0000
Commit:     Michael Orlitzky <mjo <AT> gentoo <DOT> org>
CommitDate: Fri Jun 30 11:30:16 2023 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=4b15c5b4

sci-mathematics/giac: fix and re-enable two disabled tests.

Signed-off-by: Michael Orlitzky <mjo <AT> gentoo.org>

 .../giac-1.9.0.55-disable-failing-tests.patch      | 35 ------------
 .../giac/files/giac-1.9.0.55-pari-2.15-test.patch  | 10 ++++
 .../files/giac-1.9.0.55-undefined-behavior.patch   | 62 ++++++++++++++++++++++
 sci-mathematics/giac/giac-1.9.0.55.ebuild          |  3 +-
 4 files changed, 74 insertions(+), 36 deletions(-)

diff --git 
a/sci-mathematics/giac/files/giac-1.9.0.55-disable-failing-tests.patch 
b/sci-mathematics/giac/files/giac-1.9.0.55-disable-failing-tests.patch
deleted file mode 100644
index fdb0cf9f0396..000000000000
--- a/sci-mathematics/giac/files/giac-1.9.0.55-disable-failing-tests.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-From e9ad950f7838921b1d0c85b503d7c9668be663b6 Mon Sep 17 00:00:00 2001
-From: Michael Orlitzky <[email protected]>
-Date: Thu, 22 Jun 2023 16:57:55 -0400
-Subject: [PATCH 1/1] check/Makefile.am: disable two failing tests.
-
-Mentioned on Github at,
-
-  https://github.com/sagemath/sage/pull/35745#issuecomment-1603298668
-
-For the moment, and without more information, disabling them is the
-simplest thing to do.
----
- check/Makefile.am | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/check/Makefile.am b/check/Makefile.am
-index ef0aa03..be1260c 100644
---- a/check/Makefile.am
-+++ b/check/Makefile.am
-@@ -1,10 +1,10 @@
- TESTS =       chk_integrate  \
-               chk_factor chk_normalize chk_partfrac chk_limit \
-               chk_cas chk_geo chk_morley_demo chk_xavier \
--              chk_fhan1 chk_fhan2 chk_fhan3 chk_fhan4 chk_fhan5 \
-+              chk_fhan1 chk_fhan2 chk_fhan3 chk_fhan5 \
-               chk_fhan6 chk_fhan8 chk_fhan0 \
-               chk_fhan11 chk_fhan12 chk_fhan13 chk_fhan14 chk_fhan15 \
--              chk_fhan16 chk_fhan17 chk_fhan19 chk_fhan20 \
-+              chk_fhan16 chk_fhan19 chk_fhan20 \
-               chk_fhan21 chk_fhan9 chk_fhan18 chk_fhan7
- EXTRA_DIST =  chk_integrate chk_intinda chk_intindbo chk_intindbr \
-               chk_intindc chk_intindj chk_intindm \
--- 
-2.39.3
-

diff --git a/sci-mathematics/giac/files/giac-1.9.0.55-pari-2.15-test.patch 
b/sci-mathematics/giac/files/giac-1.9.0.55-pari-2.15-test.patch
new file mode 100644
index 000000000000..956ade485edd
--- /dev/null
+++ b/sci-mathematics/giac/files/giac-1.9.0.55-pari-2.15-test.patch
@@ -0,0 +1,10 @@
+https://github.com/void-linux/void-packages/blob/master/srcpkgs/giac/patches/giac-pari-2.15-test.patch
+
+--- a/check/chk_fhan4  2018-03-13 15:27:11.000000000 -0300
++++ b/check/chk_fhan4  2022-10-14 18:51:12.604731890 -0300
+@@ -1,4 +1,5 @@
+ #! /bin/sh
+ unset LANG
++export PARI_SIZE=2048000
+ ../src/icas TP04-sol.cas > TP04.tst
+ diff TP04.tst TP04-sol.cas.out1

diff --git a/sci-mathematics/giac/files/giac-1.9.0.55-undefined-behavior.patch 
b/sci-mathematics/giac/files/giac-1.9.0.55-undefined-behavior.patch
new file mode 100644
index 000000000000..78eac91a5244
--- /dev/null
+++ b/sci-mathematics/giac/files/giac-1.9.0.55-undefined-behavior.patch
@@ -0,0 +1,62 @@
+From fc0fb5ba02953d6e15424ce3a2d8f5b52380ffb4 Mon Sep 17 00:00:00 2001
+From: Michael Orlitzky <[email protected]>
+Date: Sun, 25 Jun 2023 13:43:35 -0400
+Subject: [PATCH 1/1] src/vecteur.cc: fix invalid vector indexing.
+
+A few places in vector.cc use the construct &buffer[n]-m where
+"buffer" is an std::vector and "n" its size. This is undefined
+behavior since the index is outside of the allowed range (0 through
+n-1). With GLIBCXX_ASSERTIONS enabled, it crashes on the out-of-
+bounds index.
+
+The most obvious fix is to use &buffer[n-1]-(m+1), which avoids the
+issue so long as n >= 1. I think this will always be the case in the
+affected code, but if I'm wrong, it can be fixed by adding a special
+case for n == 0.
+---
+ src/vecteur.cc | 8 ++++----
+ 1 file changed, 4 insertions(+), 4 deletions(-)
+
+diff --git a/src/vecteur.cc b/src/vecteur.cc
+index 89b1445..c91af66 100644
+--- a/src/vecteur.cc
++++ b/src/vecteur.cc
+@@ -7998,7 +7998,7 @@ namespace giac {
+       if (convertpos){
+         int C=col+1;
+         longlong * buf=&buffer[C];
+-        longlong * bufend=&buffer[cmax]-8;
++        longlong * bufend=&buffer[cmax-1]-7;
+         const int * nline=&Nline[C];
+         for (;buf<=bufend;buf+=8,nline+=8){
+           longlong x,y;
+@@ -8022,7 +8022,7 @@ namespace giac {
+       else {
+         int C=col+1;
+         longlong * buf=&buffer[C];
+-        longlong * bufend=&buffer[cmax]-8;
++        longlong * bufend=&buffer[cmax-1]-7;
+         const int * nline=&Nline[C];
+         for (;buf<=bufend;buf+=8,nline+=8){
+           buf[0] -= coeff*nline[0];
+@@ -8268,7 +8268,7 @@ namespace giac {
+           }
+ #else
+           int C=col+1;
+-          longlong * ptr= &buffer[C],*ptrend=&buffer[cmax]-4;
++          longlong * ptr= &buffer[C],*ptrend=&buffer[cmax-1]-3;
+           const int *ptrN=&Nline[C];
+           for (;ptr<ptrend;ptrN+=4,ptr+=4){
+             longlong x = *ptr;
+@@ -8300,7 +8300,7 @@ namespace giac {
+         }
+         else {
+           int C=col+1;
+-          longlong * ptr= &buffer[C],*ptrend=&buffer[cmax]-4;
++          longlong * ptr= &buffer[C],*ptrend=&buffer[cmax-1] - 3;
+           const int *ptrN=&Nline[C];
+           for (;ptr<ptrend;ptrN+=4,ptr+=4){
+             *ptr -= coeff*(*ptrN);
+-- 
+2.39.3
+

diff --git a/sci-mathematics/giac/giac-1.9.0.55.ebuild 
b/sci-mathematics/giac/giac-1.9.0.55.ebuild
index dc56ce5cff71..287394488a2d 100644
--- a/sci-mathematics/giac/giac-1.9.0.55.ebuild
+++ b/sci-mathematics/giac/giac-1.9.0.55.ebuild
@@ -50,7 +50,8 @@ PATCHES=(
        "${FILESDIR}/${PN}-1.7.0.1-gsl_lapack.patch"
        "${FILESDIR}/${PN}-1.6.0-pari-2.11.patch"
        "${FILESDIR}/${PN}-1.9.0.21-pari-2.15.patch"
-       "${FILESDIR}/${PN}-1.9.0.55-disable-failing-tests.patch"
+       "${FILESDIR}/${PN}-1.9.0.55-pari-2.15-test.patch"
+       "${FILESDIR}/${PN}-1.9.0.55-undefined-behavior.patch"
 )
 
 REQUIRED_USE="test? ( gui )"

Reply via email to