Commit 751a8a34 authored by Rusty Russell's avatar Rusty Russell

tdb2: use vasprintf.

parent e5bb37ea
...@@ -76,6 +76,7 @@ int main(int argc, char *argv[]) ...@@ -76,6 +76,7 @@ int main(int argc, char *argv[])
return 1; return 1;
if (strcmp(argv[1], "depends") == 0) { if (strcmp(argv[1], "depends") == 0) {
printf("ccan/asprintf\n");
printf("ccan/hash\n"); printf("ccan/hash\n");
printf("ccan/likely\n"); printf("ccan/likely\n");
printf("ccan/asearch\n"); printf("ccan/asearch\n");
......
#include "private.h" #include "private.h"
#include <ccan/asprintf/asprintf.h>
#include <ccan/tdb2/tdb2.h> #include <ccan/tdb2/tdb2.h>
#include <assert.h> #include <assert.h>
#include <stdarg.h> #include <stdarg.h>
...@@ -756,23 +757,18 @@ enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb, ...@@ -756,23 +757,18 @@ enum TDB_ERROR COLD tdb_logerr(struct tdb_context *tdb,
if (!tdb->logfn) if (!tdb->logfn)
return ecode; return ecode;
/* FIXME: Doesn't assume asprintf. */
va_start(ap, fmt); va_start(ap, fmt);
len = vsnprintf(NULL, 0, fmt, ap); len = vasprintf(&message, fmt, ap);
va_end(ap); va_end(ap);
message = malloc(len + 1); if (len < 0) {
if (!message) {
tdb->logfn(tdb, TDB_LOG_ERROR, tdb->log_private, tdb->logfn(tdb, TDB_LOG_ERROR, tdb->log_private,
"out of memory formatting message:"); "out of memory formatting message:");
tdb->logfn(tdb, level, tdb->log_private, fmt); tdb->logfn(tdb, level, tdb->log_private, fmt);
return ecode; } else {
}
va_start(ap, fmt);
len = vsprintf(message, fmt, ap);
va_end(ap);
tdb->logfn(tdb, level, tdb->log_private, message); tdb->logfn(tdb, level, tdb->log_private, message);
free(message); free(message);
}
errno = saved_errno; errno = saved_errno;
return ecode; return ecode;
} }
...@@ -85,7 +85,6 @@ block_repeat_failures(struct failtest_call *history, unsigned num) ...@@ -85,7 +85,6 @@ block_repeat_failures(struct failtest_call *history, unsigned num)
const struct failtest_call *i, *last = &history[num-1]; const struct failtest_call *i, *last = &history[num-1];
if (failmatch(last, INITIAL_TDB_MALLOC) if (failmatch(last, INITIAL_TDB_MALLOC)
|| failmatch(last, LOGGING_MALLOC)
|| failmatch(last, URANDOM_OPEN) || failmatch(last, URANDOM_OPEN)
|| failmatch(last, URANDOM_READ)) { || failmatch(last, URANDOM_READ)) {
if (find_repeat(history, last, last)) if (find_repeat(history, last, last))
......
...@@ -4,8 +4,7 @@ ...@@ -4,8 +4,7 @@
#include <stdbool.h> #include <stdbool.h>
/* FIXME: Check these! */ /* FIXME: Check these! */
#define INITIAL_TDB_MALLOC "tdb.c", 189, FAILTEST_MALLOC #define INITIAL_TDB_MALLOC "tdb.c", 190, FAILTEST_MALLOC
#define LOGGING_MALLOC "tdb.c", 766, FAILTEST_MALLOC
#define URANDOM_OPEN "tdb.c", 49, FAILTEST_OPEN #define URANDOM_OPEN "tdb.c", 49, FAILTEST_OPEN
#define URANDOM_READ "tdb.c", 29, FAILTEST_READ #define URANDOM_READ "tdb.c", 29, FAILTEST_READ
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment