fix map_remove bug -> 2.2.18 14/11314/1
authorho.namkoong <ho.namkoong@samsung.com>
Thu, 24 Oct 2013 07:28:24 +0000 (16:28 +0900)
committerho.namkoong <ho.namkoong@samsung.com>
Thu, 24 Oct 2013 07:28:24 +0000 (16:28 +0900)
Change-Id: If76db0945de272a38bb714145658284ddf6f7355

src/common_modules.h
src/sdb_client.c
src/sdb_map.c
src/utils_windows.c

index a1af8a928c05b7dbcde884f3e854c0d51ef59671..7f2ce186dbe44d387d53c2a0860e173b72f462a3 100644 (file)
@@ -38,7 +38,7 @@
 #define A_VERSION 0x0100000
 #define SDB_VERSION_MAJOR   2       // increments upon significant architectural changes or the achievement of important milestones
 #define SDB_VERSION_MINOR   2       // progress is made within a major version
-#define SDB_VERSION_PATCH   17      // increments for small sets of changes
+#define SDB_VERSION_PATCH   18      // increments for small sets of changes
 #define SDB_VERSION_MAX_LENGTH  128
 
 extern MAP hex_map;
index 2037d8a3caae4be231a5e08ef1bb9840e6884cd4..74f22ffba7c3051b529eaccb3370b02d12d4ed96 100644 (file)
@@ -410,6 +410,7 @@ int sdb_connect(const char *service, void** ext_args)
             sdb_close(fd);
             return -1;
         }
+        sdb_close(fd);
         char *tokens[3];
         size_t cnt = tokenize(buf, ".", tokens, 3);
 
@@ -443,7 +444,6 @@ int sdb_connect(const char *service, void** ext_args)
             if (cnt) {
                 free_strings(tokens, cnt);
             }
-            sdb_close(fd);
             int fd2 = _sdb_connect("host:kill", ext_args);
             sdb_close(fd2);
             sdb_sleep_ms(2000);
index 470429f610f5d71af9ca437f2e73ef2243709f8c..58577bbf05a8603c7006d7cbf7462a0497c4297a 100644 (file)
@@ -138,26 +138,7 @@ void map_remove(MAP* this, MAP_KEY key) {
     LIST_NODE** hash_list = &(this->map_node_list[hash_key]);
 
     LIST_NODE* result_node = find_in_list(this, *hash_list, key);
-    if(result_node != NULL) {
-        this->freedata(result_node->data);
-        LIST_NODE* prev = result_node->prev_ptr;
-        LIST_NODE* next = result_node->next_ptr;
-
-        if(prev == NULL && next == NULL) {
-            *hash_list = NULL;
-        }
-        else {
-            if(prev != NULL) {
-                prev->next_ptr = next;
-            }
-
-            if(next != NULL) {
-                next->prev_ptr = prev;
-            }
-        }
-
-        free(result_node);
-    }
+    remove_node(hash_list, result_node, this->freedata);
 }
 
 void map_clear(MAP* this) {
index 05347a823dec7e9338a3ccb756b4ff04906b06dd..1b7a082132c07dd59c028cf5b593e3f272f1ce00 100755 (executable)
@@ -242,7 +242,7 @@ static sdb_mutex_t free_socket_handle_list_lock;
 static SDB_HANDLE* alloc_handle(int socket) {
 
        SDB_HANDLE* _h = NULL;
-    sdb_mutex_lock(&_win32_lock, "_fh_alloc");
+    sdb_mutex_lock(&_win32_lock, "_fh_alloc _win32_lock");
 
     if(total_handle_number < WIN32_MAX_FHS) {
        total_handle_number++;
@@ -255,10 +255,10 @@ static SDB_HANDLE* alloc_handle(int socket) {
                        LOG_INFO("no free socket. assign socket fd FD(%d)\n", _h->fd);
                }
                else {
-                       sdb_mutex_lock(&free_socket_handle_list_lock, "_fh_alloc");
+                       sdb_mutex_lock(&free_socket_handle_list_lock, "_fh_alloc free_socket_handle_list_lock");
                        _h = free_socket_handle_list->data;
                        remove_first(&free_socket_handle_list, no_free);
-                       sdb_mutex_unlock(&free_socket_handle_list_lock, "_fh_alloc");
+                       sdb_mutex_unlock(&free_socket_handle_list_lock, "_fh_alloc free_socket_handle_list_lock");
                        LOG_INFO("reuse socket fd FD(%d)\n", _h->fd);
                }
                _h->u.socket = INVALID_SOCKET;
@@ -276,7 +276,7 @@ static SDB_HANDLE* alloc_handle(int socket) {
        LOG_ERROR("no more space for file descriptor. max file descriptor is %d\n", WIN32_MAX_FHS);
     }
 
-    sdb_mutex_unlock(&_win32_lock, "_fh_alloc");
+    sdb_mutex_unlock(&_win32_lock, "_fh_alloc _win32_lock");
     return _h;
 }
 
@@ -320,7 +320,9 @@ static int _fh_close(SDB_HANDLE* _h) {
            _h->u.file_handle = INVALID_HANDLE_VALUE;
            free(_h);
        }
+       sdb_mutex_lock(&_win32_lock, "_fh_close");
        total_handle_number--;
+       sdb_mutex_unlock(&_win32_lock, "_fh_close");
     return 0;
 }