diff options
author | peter <peter@FreeBSD.org> | 2015-10-12 04:57:36 +0000 |
---|---|---|
committer | peter <peter@FreeBSD.org> | 2015-10-12 04:57:36 +0000 |
commit | 6a8fa4cab570f77af8326e0339fdf0b4c09756c6 (patch) | |
tree | 64caa5ea4f1fe4b74e7d1dcbc5bdc3c674998b26 /contrib/apr/memory/unix/apr_pools.c | |
parent | 5ee4ad2f183130d523ba9911b00fe7b158897de8 (diff) | |
download | FreeBSD-src-6a8fa4cab570f77af8326e0339fdf0b4c09756c6.zip FreeBSD-src-6a8fa4cab570f77af8326e0339fdf0b4c09756c6.tar.gz |
MFC: r269851,r272076,r274884,r282328,r285644,r286503,r286504,r286505,
r286506,r286510,r286561,r286562,r287034
Update svnlite from 1.8.10 to 1.8.14, and the support components:
serf->1.3.8, apr->1.5.2, apr-util->1.5.4, sqlite3->3.8.11.1
This includes syncing the developer templates with head.
Diffstat (limited to 'contrib/apr/memory/unix/apr_pools.c')
-rw-r--r-- | contrib/apr/memory/unix/apr_pools.c | 26 |
1 files changed, 13 insertions, 13 deletions
diff --git a/contrib/apr/memory/unix/apr_pools.c b/contrib/apr/memory/unix/apr_pools.c index 5c1a1ff..20e4254 100644 --- a/contrib/apr/memory/unix/apr_pools.c +++ b/contrib/apr/memory/unix/apr_pools.c @@ -1135,21 +1135,12 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) * room to hold the NUL terminator. */ if (ps.node->first_avail == ps.node->endp) { - if (psprintf_flush(&ps.vbuff) == -1) { - if (pool->abort_fn) { - pool->abort_fn(APR_ENOMEM); - } - - return NULL; - } + if (psprintf_flush(&ps.vbuff) == -1) + goto error; } - if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) { - if (pool->abort_fn) - pool->abort_fn(APR_ENOMEM); - - return NULL; - } + if (apr_vformatter(psprintf_flush, &ps.vbuff, fmt, ap) == -1) + goto error; strp = ps.vbuff.curpos; *strp++ = '\0'; @@ -1195,6 +1186,15 @@ APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *pool, const char *fmt, va_list ap) list_insert(active, node); return strp; + +error: + if (pool->abort_fn) + pool->abort_fn(APR_ENOMEM); + if (ps.got_a_new_node) { + ps.node->next = ps.free; + allocator_free(pool->allocator, ps.node); + } + return NULL; } |