ebaa79f (Make report() from usage.c public as vreportf() and use it.,
2010-03-06) changed fast-import's die_nicely() to use vreportf().
Unfortunately this is not possible: we need the message again for
write_report(), and vreportf() uses vsnprintf(), which invalidates the
va_list. As pointed out by Erik Faye-Lund, va_copy is C99 and thus
not an option.
So revert the part of ebaa79f that pertains to die_nicely().
Signed-off-by: Thomas Rast <redacted>
---
Erik Faye-Lund wrote:
Ugh. We don't use the va_copy for portability reasons; it's C99, and
impossible to implement in a portable way on non-C99 systems.
Ah well, that makes the patch easier to write though more annoying :-)
fast-import.c | 8 +++++---
1 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/fast-import.c b/fast-import.c
index c0728c2..1e5d66e 100644
--- a/fast-import.c
+++ b/fast-import.c
@@ -483,12 +483,14 @@ static void dump_marks(void);
static NORETURN void die_nicely(const char *err, va_list params)
{
static int zombie;
+ char message[2 * PATH_MAX];
- vreportf("fatal: ", err, params);
+ vsnprintf(message, sizeof(message), err, params);
+ fputs("fatal: ", stderr);
+ fputs(message, stderr);
+ fputc('\n', stderr);
if (!zombie) {
- char message[2 * PATH_MAX];
-
zombie = 1;
write_crash_report(message);
end_packfile();--
1.7.1.561.g94582