From: Ray Lv Date: Wed, 30 Oct 2013 03:40:54 +0000 (+0800) Subject: Wrap hex_to_num table into class HexTable X-Git-Tag: v0.72~21 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=588ed60a8ec1d8db5e096fd8f7b762f2afcf7dd3;p=ceph.git Wrap hex_to_num table into class HexTable Reviewed-by: Yehuda Sadeh --- diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index e989fa3242cd..317dd8829e55 100644 --- a/src/rgw/rgw_common.cc +++ b/src/rgw/rgw_common.cc @@ -648,13 +648,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++) @@ -663,10 +662,17 @@ static char hex_to_num(char c) table[i] = i - 'A' + 0xa; for (i = 'a'; i<='f'; i++) table[i] = i - 'a' + 0xa; + } - initialized = true; + char to_num(char c) { + return table[(int)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)