From 588ed60a8ec1d8db5e096fd8f7b762f2afcf7dd3 Mon Sep 17 00:00:00 2001 From: Ray Lv Date: Wed, 30 Oct 2013 11:40:54 +0800 Subject: [PATCH] Wrap hex_to_num table into class HexTable Reviewed-by: Yehuda Sadeh --- src/rgw/rgw_common.cc | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index e989fa3242c..317dd8829e5 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) -- 2.47.3