shithub: sl

Download patch

ref: 9b064b44312f1125bd4af59f9c27df69834ddc2f
parent: 53a2fafa398442453ae0e0980005f16b671d6400
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Sun Jan 5 22:47:22 EST 2025

mptod: don't shift by 64

--- a/3rd/mp/mptod.c
+++ b/3rd/mp/mptod.c
@@ -7,7 +7,8 @@
 {
 	uint64_t v;
 	mpdigit w, r;
-	int sf, i, n, m, s;
+	int sf, i, n;
+	uint32_t m, s;
 	FPdbleword x;
 
 	if(a->top == 0) return 0.0;
@@ -29,9 +30,14 @@
 		else
 			w = a->p[i];
 		m = 54 - n;
-		if(m > Dbits) m = Dbits;
+		if(m > Dbits){
+			m = Dbits;
+			v = 0;
+		}else{
+			v <<= m;
+		}
 		s = Dbits - m & Dbits - 1;
-		v = v << m | w >> s;
+		v |= w >> s;
 		r = w & (1ULL<<s) - 1;
 		n += m;
 	}