From 134b5553c38802ca35bdd401f9217786a870a58e Mon Sep 17 00:00:00 2001 From: michael Date: Sun, 12 Aug 2018 09:27:54 +0000 Subject: [PATCH] Fix bug #34117, more clear hexdig git-svn-id: trunk@39610 - --- packages/regexpr/src/regexpr.pas | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/regexpr/src/regexpr.pas b/packages/regexpr/src/regexpr.pas index c05d737cfb..7cc95a65c0 100644 --- a/packages/regexpr/src/regexpr.pas +++ b/packages/regexpr/src/regexpr.pas @@ -2105,17 +2105,16 @@ function TRegExpr.ParseAtom (var flagp : integer) : PRegExprChar; end; function HexDig (ch : REChar) : PtrInt; + begin - Result := 0; - if (ch >= 'a') and (ch <= 'f') - then ch := REChar (ord (ch) - (ord ('a') - ord ('A'))); - if (ch < '0') or (ch > 'F') or ((ch > '9') and (ch < 'A')) then begin + Result := Ord(Ch); + Case Result of + Ord('A')..Ord('F') : Result:=10+Result-Ord('A'); + Ord('a')..Ord('f') : Result:=10+Result-Ord('a'); + Ord('0')..Ord('9') : Result:=Result-Ord('0'); + else Error (reeBadHexDigit); - EXIT; - end; - Result := ord (ch) - ord ('0'); - if ch >= 'A' - then Result := Result - (ord ('A') - ord ('9') - 1); + end; end; function EmitRange (AOpCode : REChar) : PRegExprChar;