Mercurial > projects > ldc
changeset 1124:e7f0c2b48047
Fix a bug where ::warning() was called with a va_list argument instead of an
actual vararg list.
Also cleaned up the format for warnings. (Previously some would start with
"warning - warning - Warning:" which was a bit redundant)
author | Frits van Bommel <fvbommel wxs.nl> |
---|---|
date | Wed, 18 Mar 2009 15:03:17 +0100 |
parents | 165a920f4e88 |
children | 8208374e5bed |
files | dmd/expression.c dmd/mars.c dmd/mars.h dmd/mtype.c dmd/statement.c gen/logger.cpp gen/logger.h |
diffstat | 7 files changed, 28 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/dmd/expression.c Wed Mar 18 00:25:36 2009 +0100 +++ b/dmd/expression.c Wed Mar 18 15:03:17 2009 +0100 @@ -963,10 +963,9 @@ { if (global.params.warnings && !global.gag) { - fprintf(stdmsg, "warning - "); va_list ap; va_start(ap, format); - ::warning(loc, format, ap); + ::vwarning(loc, format, ap); va_end( ap ); } }
--- a/dmd/mars.c Wed Mar 18 00:25:36 2009 +0100 +++ b/dmd/mars.c Wed Mar 18 15:03:17 2009 +0100 @@ -109,13 +109,10 @@ { if (global.params.warnings && !global.gag) { - fprintf(stdmsg, "warning - "); - va_list ap; - va_start(ap, format); - char* p = loc.toChars(); - fprintf(stdmsg, "Warning: %s:", p?p:""); - vfprintf(stdmsg, format, ap); - va_end( ap ); + va_list ap; + va_start(ap, format); + vwarning(loc, format, ap); + va_end( ap ); } } @@ -137,6 +134,23 @@ global.errors++; } +void vwarning(Loc loc, const char *format, va_list ap) +{ + if (global.params.warnings && !global.gag) + { + char *p = loc.toChars(); + + if (*p) + fprintf(stdmsg, "%s: ", p); + mem.free(p); + + fprintf(stdmsg, "Warning: "); + vfprintf(stdmsg, format, ap); + fprintf(stdmsg, "\n"); + fflush(stdmsg); + } +} + /*************************************** * Call this after printing out fatal error messages to clean up and exit * the compiler.
--- a/dmd/mars.h Wed Mar 18 00:25:36 2009 +0100 +++ b/dmd/mars.h Wed Mar 18 15:03:17 2009 +0100 @@ -388,6 +388,7 @@ }; void warning(Loc loc, const char *format, ...); +void vwarning(Loc loc, const char *format, va_list); void error(Loc loc, const char *format, ...); void verror(Loc loc, const char *format, va_list); void fatal();
--- a/dmd/mtype.c Wed Mar 18 00:25:36 2009 +0100 +++ b/dmd/mtype.c Wed Mar 18 15:03:17 2009 +0100 @@ -714,10 +714,9 @@ { if (global.params.warnings && !global.gag) { - fprintf(stdmsg, "warning - "); va_list ap; va_start(ap, format); - ::verror(loc, format, ap); + ::vwarning(loc, format, ap); va_end( ap ); } }
--- a/dmd/statement.c Wed Mar 18 00:25:36 2009 +0100 +++ b/dmd/statement.c Wed Mar 18 15:03:17 2009 +0100 @@ -100,10 +100,9 @@ { if (global.params.warnings && !global.gag) { - fprintf(stdmsg, "warning - "); va_list ap; va_start(ap, format); - ::verror(loc, format, ap); + ::vwarning(loc, format, ap); va_end( ap ); } }
--- a/gen/logger.cpp Wed Mar 18 00:25:36 2009 +0100 +++ b/gen/logger.cpp Wed Mar 18 15:03:17 2009 +0100 @@ -71,13 +71,11 @@ { return _enabled; } - void attention(const Loc& loc, const char* fmt,...) + void attention(Loc loc, const char* fmt,...) { - printf("Warning: %s: ", loc.toChars()); va_list va; va_start(va,fmt); - vprintf(fmt,va); + vwarning(loc,fmt,va); va_end(va); - printf("\n"); } }