summaryrefslogtreecommitdiffstats
path: root/contrib/apr/memory/unix/apr_pools.c
diff options
context:
space:
mode:
authorpeter <peter@FreeBSD.org>2015-10-12 04:57:36 +0000
committerpeter <peter@FreeBSD.org>2015-10-12 04:57:36 +0000
commit6a8fa4cab570f77af8326e0339fdf0b4c09756c6 (patch)
tree64caa5ea4f1fe4b74e7d1dcbc5bdc3c674998b26 /contrib/apr/memory/unix/apr_pools.c
parent5ee4ad2f183130d523ba9911b00fe7b158897de8 (diff)
downloadFreeBSD-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.c26
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;
}
OpenPOWER on IntegriCloud