mem = malloc(size);
ks_assert(mem);
+ memset(mem, 0, size);
mp_p->mp_top += size;
mp_p->mp_page_c += page_n;
return ret;
}
-
ret = free_pointer(mp_p, addr, size);
if (ret != KS_STATUS_SUCCESS) {
/* record the next pointer because it might be invalidated below */
next_p = block_p->mb_next_p;
+ if (next_p && (next_p->mb_magic != BLOCK_MAGIC || next_p->mb_magic2 != BLOCK_MAGIC)) {
+ final = KS_STATUS_POOL_OVER;
+ break;
+ }
ret = free_pages(block_p, (unsigned long)((char *) block_p->mb_bounds_p - (char *) block_p));
+ if (next_p && (next_p->mb_magic != BLOCK_MAGIC || next_p->mb_magic2 != BLOCK_MAGIC)) {
+ final = KS_STATUS_POOL_OVER;
+ break;
+ }
if (ret != KS_STATUS_SUCCESS) {
final = ret;
ks_assert(mp_p);
+ //if (1) return calloc(1, byte_size);
+
if (mp_p->mp_magic != KS_POOL_MAGIC) {
if (!(mp_p->mp_flags & KS_POOL_FLAG_NO_ASSERT)) {
abort();
ks_assert(mp_p);
+ //if (1) return calloc(ele_n, ele_size);
+
if (mp_p->mp_magic != KS_POOL_MAGIC) {
if (!(mp_p->mp_flags & KS_POOL_FLAG_NO_ASSERT)) {
abort();
ks_assert(addrP);
addr = *addrP;
-
+
ks_assert(mp_p);
ks_assert(addr);
+ //if (1) {
+ // *addrP = NULL;
+ // free(addr);
+ // return KS_STATUS_SUCCESS;
+ //}
+
ks_mutex_lock(mp_p->mutex);
if (mp_p->mp_magic != KS_POOL_MAGIC) {
}
if (mp_p->mp_log_func != NULL) {
- alloc_prefix_t *prefix = (alloc_prefix_t *) ((char *) addr - PREFIX_SIZE);
+ alloc_prefix_t *prefix = (alloc_prefix_t *)((char *)addr - PREFIX_SIZE);
if (prefix->refs == 1) {
mp_p->mp_log_func(mp_p, KS_POOL_FUNC_FREE, prefix->size, prefix->refs - 1, NULL, addr, 0);
} else {
ks_assert(mp_p);
//ks_assert(old_addr);
+
+ //if (1) return realloc(old_addr, new_byte_size);
if (!old_addr) {
return ks_pool_alloc_ex(mp_p, new_byte_size, error_p);
case KS_MPCL_DESTROY:
#ifdef WIN32
- CloseHandle(thread->handle);
+ if (!(thread->flags & KS_THREAD_FLAG_DETACHED)) {
+ CloseHandle(thread->handle);
+ }
#endif
break;
}
KS_DECLARE(uint8_t) ks_thread_priority(ks_thread_t *thread) {
uint8_t priority = 0;
#ifdef WIN32
- int pri = GetThreadPriority(thread->handle);
-
- if (pri >= THREAD_PRIORITY_TIME_CRITICAL) {
- priority = 99;
- } else if (pri >= THREAD_PRIORITY_ABOVE_NORMAL) {
- priority = 50;
- } else {
- priority = 10;
- }
+ //int pri = GetThreadPriority(thread->handle);
+
+ //if (pri >= THREAD_PRIORITY_TIME_CRITICAL) {
+ // priority = 99;
+ //} else if (pri >= THREAD_PRIORITY_ABOVE_NORMAL) {
+ // priority = 50;
+ //} else {
+ // priority = 10;
+ //}
+ priority = thread->priority;
#else
int policy;
struct sched_param param = { 0 };
}
if (flags & KS_THREAD_FLAG_DETACHED) {
- //CloseHandle(thread->handle);
+ CloseHandle(thread->handle);
}
status = KS_STATUS_SUCCESS;
void *tmp;
kws->bbuflen = need + blen + kws->rplen;
-
if ((tmp = ks_pool_resize(kws->pool, kws->bbuffer, (unsigned long)kws->bbuflen))) {
kws->bbuffer = tmp;
} else {
kws->rplen = kws->plen - need;
if (kws->rplen) {
+ ks_assert((kws->body + kws->rplen) <= (kws->bbuffer + kws->bbuflen));
memcpy(kws->body, kws->payload, kws->rplen);
}
-
+
while(need) {
+ ks_assert((kws->body + need + kws->rplen) <= (kws->bbuffer + kws->bbuflen));
ks_ssize_t r = kws_raw_read(kws, kws->body + kws->rplen, need, WS_BLOCK);
if (r < 1) {