]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Wrap hex_to_num table into class HexTable
authorRay Lv <xiangyulv@gmail.com>
Wed, 30 Oct 2013 03:40:54 +0000 (11:40 +0800)
committerSage Weil <sage@inktank.com>
Fri, 1 Nov 2013 23:03:55 +0000 (16:03 -0700)
Reviewed-by: Yehuda Sadeh <yehuda@inktank.com>
src/rgw/rgw_common.cc

index e989fa3242cdcecc0b4902b5d08e3ee32adc3654..317dd8829e5541271661f4d53c065192126610e8 100644 (file)
@@ -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)