static size_t write_callback(char *ptr, size_t size, size_t nmemb, void *userdata) { curl_write_context *ctx; int left_size, need_size; ctx = (curl_write_context *) userdata; left_size = ctx->length - ctx->index; need_size = size * nmemb + 1; if (need_size > left_size) { ctx->length = calculate_new_length(ctx->length, need_size); ctx->p = m2x_realloc(ctx->m2x_ctx, ctx->p, ctx->length); } strncpy(ctx->p + ctx->index, ptr, size * nmemb); ctx->index += size * nmemb; ctx->p[ctx->index] = '\0'; return (size * nmemb); }
void *m2x_malloc(m2x_context *ctx, size_t len) { return m2x_realloc(ctx, NULL, len); }