]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
rgw: Wrap hex_to_num table into class HexTable
authorRay Lv <xiangyulv@gmail.com>
Tue, 29 Oct 2013 11:34:51 +0000 (19:34 +0800)
committerYehuda Sadeh <yehuda@inktank.com>
Fri, 8 Nov 2013 22:27:32 +0000 (14:27 -0800)
Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
Signed-off-by: Ray Lv <xiangyulv@gmail.com>
(cherry picked from commit 588ed60a8ec1d8db5e096fd8f7b762f2afcf7dd3)

src/rgw/rgw_common.cc

index fb204c75d941a0c876c307aef1b12efcca9d3594..b86b29e6a0611e4c0d4986ea3e6dbf2ee764f2b1 100644 (file)
@@ -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)