From: Ray Lv Date: Tue, 29 Oct 2013 11:34:51 +0000 (+0800) Subject: rgw: Wrap hex_to_num table into class HexTable X-Git-Tag: v0.67.5~19 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=372f62717c56d9ab883ae2942e13d6d8d37c2925;p=ceph.git rgw: Wrap hex_to_num table into class HexTable Reviewed-by: Yehuda Sadeh Signed-off-by: Ray Lv (cherry picked from commit 588ed60a8ec1d8db5e096fd8f7b762f2afcf7dd3) --- diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index fb204c75d94..b86b29e6a06 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -651,13 +651,12 @@ bool verify_object_permission(struct req_state *s, int perm) return verify_object_permission(s, s->bucket_acl, s->object_acl, perm); } -static char hex_to_num(char c) +class HexTable { - static char table[256]; - static bool initialized = false; - + char table[256]; - if (!initialized) { +public: + HexTable() { memset(table, -1, sizeof(table)); int i; for (i = '0'; i<='9'; i++) @@ -667,7 +666,16 @@ static char hex_to_num(char c) for (i = 'a'; i<='f'; i++) table[i] = i - 'a' + 0xa; } - return table[(int)c]; + + char to_num(char c) { + return table[(int)c]; + } +}; + +static char hex_to_num(char c) +{ + static HexTable hex_table; + return hex_table.to_num(c); } bool url_decode(string& src_str, string& dest_str)