Signed-off-by: Rusty Russell <rusty@rustcorp.com.au>
static bool do_vfmt(char **buf, size_t off, const char *fmt, va_list ap)
{
/* A decent guess to start. */
- size_t max = strlen(fmt) * 2;
+ size_t max = strlen(fmt) * 2 + 1;
bool ok;
for (;;) {
--- /dev/null
+#include <ccan/tal/str/str.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <ccan/tal/str/str.c>
+#include <ccan/tap/tap.h>
+#include "helper.h"
+
+/* Empty format string: should still terminate! */
+int main(int argc, char *argv[])
+{
+ char *str;
+ const char *fmt = "";
+
+ plan_tests(1);
+ /* GCC complains about empty format string, complains about non-literal
+ * with no args... */
+ str = tal_fmt(NULL, fmt, "");
+ ok1(!strcmp(str, ""));
+ tal_free(str);
+
+ return exit_status();
+}