From: Rusty Russell Date: Thu, 17 Mar 2011 11:42:21 +0000 (+1030) Subject: tdb2: use vasprintf. X-Git-Url: https://git.ozlabs.org/?p=ccan;a=commitdiff_plain;h=751a8a34d06dde243c9f273427ef262c25fbe11f;ds=sidebyside tdb2: use vasprintf. --- diff --git a/ccan/tdb2/_info b/ccan/tdb2/_info index 114b60b2..67ad3f6c 100644 --- a/ccan/tdb2/_info +++ b/ccan/tdb2/_info @@ -76,6 +76,7 @@ int main(int argc, char *argv[]) return 1; if (strcmp(argv[1], "depends") == 0) { + printf("ccan/asprintf\n"); printf("ccan/hash\n"); printf("ccan/likely\n"); printf("ccan/asearch\n"); diff --git a/ccan/tdb2/tdb.c b/ccan/tdb2/tdb.c index f6ca0165..2315c485 100644 --- a/ccan/tdb2/tdb.c +++ b/ccan/tdb2/tdb.c @@ -1,4 +1,5 @@ #include "private.h" +#include #include #include #include @@ -756,23 +757,18 @@ enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb, if (!tdb->logfn) return ecode; - /* FIXME: Doesn't assume asprintf. */ va_start(ap, fmt); - len = vsnprintf(NULL, 0, fmt, ap); + len = vasprintf(&message, fmt, ap); va_end(ap); - message = malloc(len + 1); - if (!message) { + if (len < 0) { tdb->logfn(tdb, TDB_LOG_ERROR, tdb->log_private, "out of memory formatting message:"); tdb->logfn(tdb, level, tdb->log_private, fmt); - return ecode; + } else { + tdb->logfn(tdb, level, tdb->log_private, message); + free(message); } - va_start(ap, fmt); - len = vsprintf(message, fmt, ap); - va_end(ap); - tdb->logfn(tdb, level, tdb->log_private, message); - free(message); errno = saved_errno; return ecode; } diff --git a/ccan/tdb2/test/failtest_helper.c b/ccan/tdb2/test/failtest_helper.c index a9ba4b47..1358a6c6 100644 --- a/ccan/tdb2/test/failtest_helper.c +++ b/ccan/tdb2/test/failtest_helper.c @@ -85,7 +85,6 @@ block_repeat_failures(struct failtest_call *history, unsigned num) const struct failtest_call *i, *last = &history[num-1]; if (failmatch(last, INITIAL_TDB_MALLOC) - || failmatch(last, LOGGING_MALLOC) || failmatch(last, URANDOM_OPEN) || failmatch(last, URANDOM_READ)) { if (find_repeat(history, last, last)) diff --git a/ccan/tdb2/test/failtest_helper.h b/ccan/tdb2/test/failtest_helper.h index 656f7cd7..25bf21d0 100644 --- a/ccan/tdb2/test/failtest_helper.h +++ b/ccan/tdb2/test/failtest_helper.h @@ -4,8 +4,7 @@ #include /* FIXME: Check these! */ -#define INITIAL_TDB_MALLOC "tdb.c", 189, FAILTEST_MALLOC -#define LOGGING_MALLOC "tdb.c", 766, FAILTEST_MALLOC +#define INITIAL_TDB_MALLOC "tdb.c", 190, FAILTEST_MALLOC #define URANDOM_OPEN "tdb.c", 49, FAILTEST_OPEN #define URANDOM_READ "tdb.c", 29, FAILTEST_READ