static void* ensureCapacity(void* data, size_t nmemb, size_t size) { SharedBuffer* buf; size_t currentSize; if (data != NULL) { buf = SharedBuffer::bufferFromData(data); currentSize = buf->size(); } else { buf = NULL; currentSize = 0; } size_t minSize = nmemb * size; if (minSize > currentSize) { unsigned int requestSize = roundUpPower2(minSize); if (buf == NULL) { buf = SharedBuffer::alloc(requestSize); } else { buf = buf->editResize(requestSize); } memset((unsigned char*)buf->data()+currentSize, 0, requestSize - currentSize); } return buf->data(); }