(*buf)->__AST_STR_USED++;
if (dynamic && (!maxlen || (escapecommas && !(maxlen - 1)))) {
+ char *oldbase = (*buf)->__AST_STR_STR;
size_t old = (*buf)->__AST_STR_LEN;
if (ast_str_make_space(buf, (*buf)->__AST_STR_LEN * 2)) {
/* If the buffer can't be extended, end it. */
}
/* What we extended the buffer by */
maxlen = old;
+
+ /* Update ptr, if necessary */
+ if ((*buf)->__AST_STR_STR != oldbase) {
+ ptr = ptr - oldbase + (*buf)->__AST_STR_STR;
+ }
}
}
if (__builtin_expect(!(maxsrc && maxlen), 0)) {