aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/beam_load.c
diff options
context:
space:
mode:
authorJohn Högberg <[email protected]>2019-07-01 11:42:11 +0200
committerJohn Högberg <[email protected]>2019-07-01 11:42:11 +0200
commitab5090ce25c8ab4212c0ca23623cd46e09d12a2e (patch)
tree43431cd32305141393a76fccc803b225f4050102 /erts/emulator/beam/beam_load.c
parentc4146a9e9d9e49e9a913acb9ce37f5816921626a (diff)
parentc14e0eea80911e36fe45839af96bb9593c63bbb6 (diff)
downloadotp-ab5090ce25c8ab4212c0ca23623cd46e09d12a2e.tar.gz
otp-ab5090ce25c8ab4212c0ca23623cd46e09d12a2e.tar.bz2
otp-ab5090ce25c8ab4212c0ca23623cd46e09d12a2e.zip
Merge branch 'john/erts/lists_subtract_fixes/OTP-15938/OTP-15939' into maint
* john/erts/lists_subtract_fixes/OTP-15938/OTP-15939: erts: Fix integer overflow in loader erts: Fix integer overflow in list subtraction
Diffstat (limited to 'erts/emulator/beam/beam_load.c')
-rw-r--r--erts/emulator/beam/beam_load.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/erts/emulator/beam/beam_load.c b/erts/emulator/beam/beam_load.c
index 941c3ebbbe..35f2ea6688 100644
--- a/erts/emulator/beam/beam_load.c
+++ b/erts/emulator/beam/beam_load.c
@@ -4612,7 +4612,15 @@ typedef struct SortGenOpArg {
static int
genopargtermcompare(SortGenOpArg* a, SortGenOpArg* b)
{
- return CMP_TERM(a->term, b->term);
+ Sint res = CMP_TERM(a->term, b->term);
+
+ if (res < 0) {
+ return -1;
+ } else if (res > 0) {
+ return 1;
+ }
+
+ return 0;
}
static int