Index: main/strings.c =================================================================== --- main/strings.c (revision 185947) +++ main/strings.c (working copy) @@ -143,7 +143,8 @@ maxlen--; (*buf)->__AST_STR_USED++; - if (dynamic && (!maxlen || (escapecommas && !(maxlen - 1)))) { + if ((ptr >= (*buf)->__AST_STR_STR + (*buf)->__AST_STR_LEN - 3) || + (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)) {