From 17f04c5043197968622539b98a2f73cc8f4ea6f0 Mon Sep 17 00:00:00 2001 From: Thomas Hume Date: Thu, 23 Feb 2017 00:58:08 +0100 Subject: [PATCH] Correct two overflows in PInt ctor --- src/dobjtype.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/dobjtype.cpp b/src/dobjtype.cpp index 211c73e824..6684776da5 100644 --- a/src/dobjtype.cpp +++ b/src/dobjtype.cpp @@ -501,7 +501,7 @@ PInt::PInt(unsigned int size, bool unsign, bool compatible) MemberOnly = (size < 4); if (!unsign) { - int maxval = (1 << ((8 * size) - 1)) - 1; + int maxval = (1u << ((8 * size) - 1)) - 1; // compute as unsigned to prevent overflow before -1 int minval = -maxval - 1; Symbols.AddSymbol(new PSymbolConstNumeric(NAME_Min, this, minval)); Symbols.AddSymbol(new PSymbolConstNumeric(NAME_Max, this, maxval)); @@ -509,7 +509,7 @@ PInt::PInt(unsigned int size, bool unsign, bool compatible) else { Symbols.AddSymbol(new PSymbolConstNumeric(NAME_Min, this, 0u)); - Symbols.AddSymbol(new PSymbolConstNumeric(NAME_Max, this, (1u << (8 * size)) - 1)); + Symbols.AddSymbol(new PSymbolConstNumeric(NAME_Max, this, (1u << ((8 * size) - 1)))); } SetOps(); }