From 73599e0b04ffe187fea1631ebdb2bd6e3b6a9188 Mon Sep 17 00:00:00 2001 From: Sei Lisa Date: Thu, 26 Jul 2018 02:31:51 +0200 Subject: [PATCH] More 32-bit negation-related overflow hazards patched. Per bug report by Tonaie Resident. --- lslopt/lslparse.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/lslopt/lslparse.py b/lslopt/lslparse.py index 808f744..ece5526 100644 --- a/lslopt/lslparse.py +++ b/lslopt/lslparse.py @@ -837,7 +837,7 @@ class parser(object): if self.tok[0] in ('INTEGER_VALUE', 'FLOAT_VALUE'): val = self.tok[1] self.NextToken() - return nr(nt=CONST, value=-val, + return nr(nt=CONST, value=lslfuncs.neg(val), t='integer' if type(val) == int else 'float') raise EParseSyntax(self) if tok0 == 'INTEGER_VALUE': @@ -1294,10 +1294,12 @@ list lazy_list_set(list L, integer i, list v) if self.tok[0] == '-': self.NextToken() if self.tok[0] == 'INTEGER_VALUE': - expr = nr(nt='CONST', t='integer', value=-self.tok[1]) + expr = nr(nt='CONST', t='integer', + value=lslfuncs.neg(self.tok[1])) self.NextToken() elif self.tok[0] == 'FLOAT_VALUE': - expr = nr(nt='CONST', t='float', value=-self.tok[1]) + expr = nr(nt='CONST', t='float', + value=lslfuncs.neg(self.tok[1])) self.NextToken() else: expr = self.Parse_unary_expression(AllowAssignment = False)