Lichen

Changeset

877:b1cfb839a60e
2019-01-26 Paul Boddie raw files shortlog changelog graph Detect overflows beyond the employed integer range for exponentiation.
templates/native/int.c (file)
     1.1 --- a/templates/native/int.c	Sat Jan 26 00:46:13 2019 +0100
     1.2 +++ b/templates/native/int.c	Sat Jan 26 01:04:18 2019 +0100
     1.3 @@ -145,6 +145,10 @@
     1.4  
     1.5      if (errno == ERANGE)
     1.6          __raise_overflow_error();
     1.7 +    if ((k > 0) && (k > __MAXINT))
     1.8 +        __raise_overflow_error();
     1.9 +    if ((k < 0) && (k < __MININT))
    1.10 +        __raise_overflow_error();
    1.11  
    1.12      /* Return the new integer. */
    1.13      return __new_int(k);