git: 9front

Download patch

ref: 885dcb9c3baf56993e8a1aa772cfd06b82d1dbf5
parent: 9f1a099ef132ecb89466f0131f2ad896d417352c
author: aiju <devnull@localhost>
date: Thu Apr 26 10:55:02 EDT 2018

mpdiv: fix dividing 0 by a small power of two

--- a/sys/src/libmp/port/mpdiv.c
+++ b/sys/src/libmp/port/mpdiv.c
@@ -22,7 +22,9 @@
 
 	// division by one or small powers of two
 	if(divisor->top == 1 && (divisor->p[0] & divisor->p[0]-1) == 0){
-		vlong r = (vlong)dividend->sign * (dividend->p[0] & divisor->p[0]-1);
+		vlong r = 0;
+		if(dividend->top > 0)
+			r = (vlong)dividend->sign * (dividend->p[0] & divisor->p[0]-1);
 		if(quotient != nil){
 			sign = divisor->sign;
 			for(s = 0; ((divisor->p[0] >> s) & 1) == 0; s++)
--