PROF_stop(MemBuf_consume);
}
-// calls memcpy, appends exactly size bytes, extends buffer if needed
+/**
+ * calls memcpy, appends exactly size bytes,
+ * extends buffer or creates buffer if needed.
+ */
void MemBuf::append(const char *newContent, mb_size_t sz)
{
assert(sz >= 0);
- assert(buf);
assert(!stolen); /* not frozen */
+ if(!buf) {
+ grow(sz+1, MEM_BUF_MAX_SIZE);
+ }
+
PROF_start(MemBuf_append);
if (sz > 0) {
if (size + sz + 1 > capacity)
PROF_stop(MemBuf_append);
}
-// updates content size after external append
+/// updates content size after external append
void MemBuf::appended(mb_size_t sz)
{
assert(size + sz <= capacity);