diff --git a/libs/libks/src/ks_pool.c b/libs/libks/src/ks_pool.c index d9bfc89ee5..f501c1924b 100644 --- a/libs/libks/src/ks_pool.c +++ b/libs/libks/src/ks_pool.c @@ -628,6 +628,10 @@ static int free_pointer(ks_pool_t *mp_p, void *addr, const unsigned long size) real_size = size; } + while ((real_size & (sizeof(void *) - 1)) > 0) { + real_size++; + } + /* * We use a specific free bits calculation here because if we are * freeing 10 bytes then we will be putting it into the 8-byte free @@ -1044,7 +1048,7 @@ static int free_mem(ks_pool_t *mp_p, void *addr) fence = FENCE_SIZE; /* now we free the pointer */ - ret = free_pointer(mp_p, addr, old_size + fence); + ret = free_pointer(mp_p, addr, old_size + fence + PREFIX_SIZE); if (ret != KS_STATUS_SUCCESS) { return ret; } diff --git a/libs/libks/src/ks_thread.c b/libs/libks/src/ks_thread.c index 02d9fcf33d..cbd778dbb0 100644 --- a/libs/libks/src/ks_thread.c +++ b/libs/libks/src/ks_thread.c @@ -93,9 +93,9 @@ static void ks_thread_cleanup(ks_pool_t *mpool, void *ptr, void *arg, int type, break; case KS_MPCL_DESTROY: #ifdef WIN32 - if (!(thread->flags & KS_THREAD_FLAG_DETATCHED)) { + //if (!(thread->flags & KS_THREAD_FLAG_DETATCHED)) { CloseHandle(thread->handle); - } + //} #endif break; } @@ -170,7 +170,7 @@ KS_DECLARE(int) ks_thread_set_priority(int nice_val) KS_DECLARE(uint8_t) ks_thread_priority(ks_thread_t *thread) { uint8_t priority = 0; #ifdef WIN32 - DWORD pri = GetThreadPriority(thread->handle); + int pri = GetThreadPriority(thread->handle); if (pri >= THREAD_PRIORITY_TIME_CRITICAL) { priority = 99; @@ -241,7 +241,7 @@ KS_DECLARE(ks_status_t) ks_thread_create_ex(ks_thread_t **rthread, ks_thread_fun } if (flags & KS_THREAD_FLAG_DETATCHED) { - CloseHandle(thread->handle); + //CloseHandle(thread->handle); } status = KS_STATUS_SUCCESS; diff --git a/libs/libks/test/testthreadmutex.c b/libs/libks/test/testthreadmutex.c index ebb593b662..ce28af07d6 100644 --- a/libs/libks/test/testthreadmutex.c +++ b/libs/libks/test/testthreadmutex.c @@ -321,12 +321,14 @@ static void test_non_recursive_mutex(void) int main(int argc, char **argv) { ks_init(); - cpu_count = ks_cpu_count() * 4; + //cpu_count = ks_cpu_count() * 4; + //cpu_count = ks_cpu_count(); + cpu_count = 1; plan(21 + cpu_count * 6); - diag("Starting testing for %d tests\n", 44); + diag("Starting testing for %d tests\n", 21 + cpu_count * 6); create_pool(); create_mutex();