From 44ca54b24dfb07254159f701bde6eb02f69f2726 Mon Sep 17 00:00:00 2001 From: helly Date: Sun, 1 Jan 2006 03:05:01 +0000 Subject: [PATCH] - Little pedantiv oversight --- actions.cc | 44 ++++++++++++++++++++++++++------------------ 1 file changed, 26 insertions(+), 18 deletions(-) diff --git a/actions.cc b/actions.cc index 74afc423..22c8b994 100644 --- a/actions.cc +++ b/actions.cc @@ -569,21 +569,25 @@ uint Scanner::unescape(SubStr &s) const || !(p4 = strchr(hex, tolower(s.str[3])))) { fatal("Illegal hexadecimal character code"); + return ~0; } - s.len -= 4; - s.str += 4; - - uint v = (uint)((p1 - hex) << 12) - + (uint)((p2 - hex) << 8) - + (uint)((p3 - hex) << 4) - + (uint)((p4 - hex)); - - if (v >= nRealChars) + else { - fatal("Illegal hexadecimal character code"); + s.len -= 4; + s.str += 4; + + uint v = (uint)((p1 - hex) << 12) + + (uint)((p2 - hex) << 8) + + (uint)((p3 - hex) << 4) + + (uint)((p4 - hex)); + + if (v >= nRealChars) + { + fatal("Illegal hexadecimal character code"); + } + + return v; } - - return v; } case '0': @@ -603,13 +607,17 @@ uint Scanner::unescape(SubStr &s) const || !(p2 = strchr(oct, s.str[1]))) { fatal("Illegal octal character code"); + return ~0; + } + else + { + s.len -= 2; + s.str += 2; + + uint v = (uint)((p0 - oct) << 6) + (uint)((p1 - oct) << 3) + (uint)(p2 - oct); + + return v; } - s.len -= 2; - s.str += 2; - - uint v = (uint)((p0 - oct) << 6) + (uint)((p1 - oct) << 3) + (uint)(p2 - oct); - - return v; } default: -- 2.40.0