From 372f62717c56d9ab883ae2942e13d6d8d37c2925 Mon Sep 17 00:00:00 2001 From: Ray Lv Date: Tue, 29 Oct 2013 19:34:51 +0800 Subject: [PATCH] rgw: Wrap hex_to_num table into class HexTable Reviewed-by: Yehuda Sadeh Signed-off-by: Ray Lv (cherry picked from commit 588ed60a8ec1d8db5e096fd8f7b762f2afcf7dd3) --- src/rgw/rgw_common.cc | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/src/rgw/rgw_common.cc b/src/rgw/rgw_common.cc index fb204c75d941a..b86b29e6a0611 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) -- 2.39.5