diff options
| author | kx <kx@radix-linux.su> | 2026-09-09 07:43:41 +0300 |
|---|---|---|
| committer | kx <kx@radix-linux.su> | 2026-09-09 07:43:41 +0300 |
| commit | 8d24b3059c99c2defe59e078a170a87ff1f0403c (patch) | |
| tree | 93b20c4b99dcbb8918013d4cc3fccbd6b5b23ede | |
| parent | 95fd63ca5616ef80f5700019de790fa50de8a141 (diff) | |
| download | libmpu-8d24b3059c99c2defe59e078a170a87ff1f0403c.tar.xz | |
Fixed: EMUSHORT overflow in multiword division normalization scale calculation
| -rw-r--r-- | mpu/mpu-integer.c | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/mpu/mpu-integer.c b/mpu/mpu-integer.c index acfaabf..0844920 100644 --- a/mpu/mpu-integer.c +++ b/mpu/mpu-integer.c @@ -10531,9 +10531,9 @@ void idiv_np( EMUSHORT *quot, EMUSHORT *rem, EMUSHORT *num, EMUSHORT *den, int n m = bnum - bden; #if MPU_WORD_ORDER_BIG_ENDIAN == 1 - scale = BASE / (y[np-bden] + 1); /* коэффициент нормализации */ + scale = BASE / ((EMULONG)y[np-bden] + 1); /* коэффициент нормализации */ #else - scale = BASE / (y[bden] + 1); /* коэффициент нормализации */ + scale = BASE / ((EMULONG)y[bden] + 1); /* коэффициент нормализации */ #endif if( scale > 1 ) { @@ -11080,9 +11080,9 @@ void isdiv_np( EMUSHORT *quot, EMUSHORT *rem, EMUSHORT *num, EMUSHORT *den, int m = bnum - bden; #if MPU_WORD_ORDER_BIG_ENDIAN == 1 - scale = BASE / (y[np-bden] + 1); /* коэффициент нормализации */ + scale = BASE / ((EMULONG)y[np-bden] + 1); /* коэффициент нормализации */ #else - scale = BASE / (y[bden] + 1); /* коэффициент нормализации */ + scale = BASE / ((EMULONG)y[bden] + 1); /* коэффициент нормализации */ #endif if( scale > 1 ) { |
