From 68467da17d576a17e4ff96c60f581561ac0bbe88 Mon Sep 17 00:00:00 2001 From: Jakob Kaivo Date: Fri, 2 Feb 2024 13:22:25 -0500 Subject: check for invalid integer conversions --- src/stdlib/div.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/stdlib/div.c') diff --git a/src/stdlib/div.c b/src/stdlib/div.c index 3cb2df78..ab267a53 100644 --- a/src/stdlib/div.c +++ b/src/stdlib/div.c @@ -1,3 +1,4 @@ +#include #include #include "_stdlib.h" @@ -8,12 +9,17 @@ div_t div(int numer, int denom) div_t d; SIGNAL_SAFE(0); + if ((denom == 0) || (numer == INT_MIN && denom == -1)) { + UNDEFINED("In call to div(): The result of %d / %d is not representable as an int", numer, denom); + } d.quot = numer / denom; d.rem = numer % denom; return d; } +CHECK_2(div_t, {0}, div, int, int) + /*** computes both the quotient and remainder of ARGUMENT(numer) divided by ARGUMENT(denom). -- cgit v1.2.1