From b2be623240af7b3318596fa348d2c7920f8703b5 Mon Sep 17 00:00:00 2001 From: akr Date: Wed, 3 Jul 2013 13:32:14 +0000 Subject: * internal.h (ruby_digit36_to_number_table): Declared. * util.c (ruby_digit36_to_number_table): Moved from scan_digits. * bignum.c (conv_digit): Use ruby_digit36_to_number_table. * pack.c (hex2num): Ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@41757 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- pack.c | 18 +++++------------- 1 file changed, 5 insertions(+), 13 deletions(-) (limited to 'pack.c') diff --git a/pack.c b/pack.c index 67b0bc2368..aba976aad7 100644 --- a/pack.c +++ b/pack.c @@ -1047,19 +1047,11 @@ qpencode(VALUE str, VALUE from, long len) static inline int hex2num(char c) { - switch (c) { - case '0': case '1': case '2': case '3': case '4': - case '5': case '6': case '7': case '8': case '9': - return c - '0'; - case 'a': case 'b': case 'c': - case 'd': case 'e': case 'f': - return c - 'a' + 10; - case 'A': case 'B': case 'C': - case 'D': case 'E': case 'F': - return c - 'A' + 10; - default: - return -1; - } + int n; + n = ruby_digit36_to_number_table[(unsigned char)c]; + if (16 <= n) + n = -1; + return n; } #define PACK_LENGTH_ADJUST_SIZE(sz) do { \ -- cgit v1.2.3