void knh_dimfree(CTX ctx, void *p, const knh_dim_t *dim) { size_t size = dim->capacity * dim->wsize; if(size > 0) { KNH_FREE(ctx, p, size); KNH_FREE(ctx, (void*)dim, sizeof(knh_dim_t)); } }
static void knh_actor_free(CTX ctx, knh_actor_t *a) { if (a->name != NULL) { KNH_FREE(ctx, (char *)a->name, strlen(a->name)); a->name = NULL; } if (a->host != NULL) { KNH_FREE(ctx, (char *)a->host, strlen(a->host)); a->host = NULL; } KNH_FREE(ctx, a, sizeof(knh_actor_t)); }
static void kGitOid_free(CTX ctx, kRawPtr *po) { if (po->rawptr != NULL) { KNH_FREE(ctx, po->rawptr, sizeof(git_oid)); po->rawptr = NULL; } }
KNHAPI(void) knh_ResultSet_initColumn(Ctx *ctx, knh_ResultSet_t *o, size_t column_size) { size_t i; if(DP(o)->column_size != 0) { for(i = 0; i < DP(o)->column_size; i++) { KNH_FINALv(ctx, DP(o)->column[i].name); } KNH_FREE(ctx, DP(o)->column, sizeof(knh_dbschema_t) * DP(o)->column_size); DP(o)->column = NULL; if(DP(o)->qcur != NULL) { DP(o)->qcurfree(DP(o)->qcur); DP(o)->qcur = NULL; } } DP(o)->column_size = column_size; if(column_size > 0) { DP(o)->column = (knh_dbschema_t*)KNH_MALLOC(ctx, sizeof(knh_dbschema_t) * DP(o)->column_size); for(i = 0; i < DP(o)->column_size; i++) { DP(o)->column[i].type = CLASS_Object; KNH_INITv(DP(o)->column[i].name, TS_EMPTY); DP(o)->column[i].start = 0; DP(o)->column[i].len = 0; } } DP(o)->count = 0; }
static void ClibGlue_free(CTX ctx, void *ptr) { if (ptr != NULL) { knh_ClibGlue_t *cglue = (knh_ClibGlue_t*)ptr; KNH_FREE(ctx, cglue, sizeof(knh_ClibGlue_t)); ptr = NULL; } }
void knh_Bytes_dispose(CTX ctx, knh_Bytes_t *ba) { if(ba->dim->capacity > 0) { //DBG_P("dispose %p %p size=%ld,%ld", ba, ba->bu.ubuf, ba->bu.len, ba->dim->capacity); KNH_FREE(ctx, ba->bu.ubuf, ba->dim->capacity); ba->bu.ubuf = NULL; ba->bu.len = 0; ((knh_dim_t*)ba->dim)->capacity = 0; } }
static void Clib_free(CTX ctx, knh_RawPtr_t *po) { if (po->rawptr != NULL) { knh_CLib_t *clib = (knh_CLib_t*)po->rawptr; if (clib->handler != NULL) { knh_dlclose(ctx, clib->handler); } KNH_FREE(ctx, clib, sizeof(knh_CLib_t)); po->rawptr = NULL; } }
static void knh_Stmt_terms_expand(Ctx *ctx, Stmt *o) { size_t i, newcapacity = DP(o)->capacity * 2; Object **newterms = (Object**)KNH_MALLOC(ctx, sizeof(Object*) * newcapacity); knh_memcpy(newterms, DP(o)->terms, sizeof(Object*) * DP(o)->capacity); for(i = DP(o)->capacity; i < newcapacity; i++) { KNH_INITv(newterms[i], KNH_NULL); } KNH_FREE(ctx, DP(o)->terms, sizeof(Object*) * DP(o)->capacity); DP(o)->terms = newterms; DP(o)->capacity = newcapacity; KNH_ASSERT(DP(o)->size < DP(o)->capacity); }
static knh_hmap_t *hmap_rehash(CTX ctx, knh_hmap_t *hmap) { size_t i, newhmax = hmap->hmax * 2 + 1; knh_hentry_t **hentry = knh_map_hentry(hmap); knh_hentry_t **newhentry = (knh_hentry_t**)KNH_REALLOC(ctx, hmap->DBGNAME, NULL, 0, newhmax, sizeof(knh_hentry_t*)); for(i = 0; i < hmap->hmax; i++) { knh_hentry_t *e = hentry[i]; while(e != NULL) { knh_hentry_t *p = e; knh_hashcode_t ni = p->hcode % newhmax; e = e->next; p->next = newhentry[ni]; newhentry[ni] = p; } } KNH_FREE(ctx, hentry, hmap->hmax * sizeof(knh_hentry_t*)); hmap->hentry = newhentry; hmap->hmax = newhmax; hmap->factor = KNH_HASH_FACTOR(newhmax); return hmap; }
static void knh_Bytes_expands(Ctx *ctx, knh_Bytes_t *ba, size_t newsize) { if(ba->capacity == 0) { newsize = knh_good_size(newsize); ba->bu.ubuf = (knh_uchar_t*)KNH_MALLOC(ctx, newsize); ba->capacity = newsize; } else { knh_uchar_t *buf = ba->bu.ubuf; size_t capacity = ba->capacity; knh_uchar_t *newa = (knh_uchar_t*)KNH_MALLOC(ctx, newsize); knh_memcpy(newa, buf, capacity); knh_bzero(&newa[capacity], newsize - capacity); ba->bu.ubuf = newa; ba->capacity = newsize; KNH_FREE(ctx, buf, capacity); if(unlikely(ctx->bufa == ba)) { KNH_SYSLOG(ctx, LOG_INFO, "ExtendedContextBuffer", "*newsize=%ld, pointer=(%p => %p)", newsize, buf, newa); knh_Bytes_checkstack(ctx, buf, buf + ba->bu.len, newa); } } }