From: Reto Buerki Date: Tue, 21 Aug 2012 13:29:30 +0000 (+0200) Subject: id_manager: Use calloc instead of malloc X-Git-Tag: 5.0.3rc1~39^2~90 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ebe592a393b175d274cc8ac3a7b25521d595622b;p=thirdparty%2Fstrongswan.git id_manager: Use calloc instead of malloc This way we don't need to manually initialize the slot status; free slots are now indicated by 0 though. --- diff --git a/src/charon-tkm/src/tkm/tkm_id_manager.c b/src/charon-tkm/src/tkm/tkm_id_manager.c index f069e0eba9..8cafa41934 100644 --- a/src/charon-tkm/src/tkm/tkm_id_manager.c +++ b/src/charon-tkm/src/tkm/tkm_id_manager.c @@ -84,9 +84,9 @@ METHOD(tkm_id_manager_t, acquire_id, int, this->locks[kind]->write_lock(this->locks[kind]); for (j = 0; j < this->limits[kind]; j++) { - if (this->ctxids[kind][j]) + if (!this->ctxids[kind][j]) { - this->ctxids[kind][j] = false; + this->ctxids[kind][j] = true; id = j + 1; break; } @@ -116,7 +116,7 @@ METHOD(tkm_id_manager_t, release_id, bool, } this->locks[kind]->write_lock(this->locks[kind]); - this->ctxids[kind][idx] = true; + this->ctxids[kind][idx] = false; this->locks[kind]->unlock(this->locks[kind]); return TRUE; @@ -142,7 +142,6 @@ tkm_id_manager_t *tkm_id_manager_create(const tkm_limits_t limits) { private_tkm_id_manager_t *this; int i; - uint64_t j; INIT(this, .public = { @@ -155,13 +154,8 @@ tkm_id_manager_t *tkm_id_manager_create(const tkm_limits_t limits) for (i = 0; i < TKM_CTX_MAX; i++) { this->limits[i] = limits[i]; - this->ctxids[i] = malloc(limits[i] * sizeof(bool)); + this->ctxids[i] = calloc(limits[i], sizeof(bool)); this->locks[i] = rwlock_create(RWLOCK_TYPE_DEFAULT); - for (j = 0; j < limits[i]; j++) - { - /* available id slots are in true state (is_available) */ - this->ctxids[i][j] = true; - } DBG2(DBG_LIB, "%N initialized, %llu slot(s)", tkm_context_kind_names, i, limits[i]); }