void *_ribified_realloc(void *ptr, size_t size) { if (NULL == ptr) return _ribified_malloc(size); if (memalloc_is_mine(¤t_ctx->memalloc, ptr)) --current_ctx->ribify_memalloc_refcount; // consider mine as freed size_t old_size = *(uint32_t *)(ptr - sizeof(uint32_t)); void *mem = _ribified_malloc(size); memcpy(mem, ptr, size > old_size ? old_size : size); return mem; }
char *_ribified_strdup(const char *s) { size_t l = strlen(s) + 1; char *mem = _ribified_malloc(l); memcpy(mem, s, l); return mem; }
void *_ribified_calloc(size_t nmemb, size_t size) { size_t s = nmemb * size; void *mem = _ribified_malloc(s); memset(mem, 0, s); return mem; }
char *_ribified_wcsdup(const wchar_t *s) { size_t l = (wcslen(s) + 1) * sizeof(wchar_t); char *mem = _ribified_malloc(l); memcpy(mem, s, l); return mem; }