From: ho.namkoong Date: Thu, 24 Oct 2013 07:28:24 +0000 (+0900) Subject: fix map_remove bug -> 2.2.18 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=95c011f33c6c6e64f39391679dd39d67642add4d;p=sdk%2Ftools%2Fsdb.git fix map_remove bug -> 2.2.18 Change-Id: If76db0945de272a38bb714145658284ddf6f7355 --- diff --git a/src/common_modules.h b/src/common_modules.h index a1af8a9..7f2ce18 100644 --- a/src/common_modules.h +++ b/src/common_modules.h @@ -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; diff --git a/src/sdb_client.c b/src/sdb_client.c index 2037d8a..74f22ff 100644 --- a/src/sdb_client.c +++ b/src/sdb_client.c @@ -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); diff --git a/src/sdb_map.c b/src/sdb_map.c index 470429f..58577bb 100644 --- a/src/sdb_map.c +++ b/src/sdb_map.c @@ -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) { diff --git a/src/utils_windows.c b/src/utils_windows.c index 05347a8..1b7a082 100755 --- a/src/utils_windows.c +++ b/src/utils_windows.c @@ -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; }