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");
     }
 }
--- a/gen/logger.h	Wed Mar 18 00:25:36 2009 +0100
+++ b/gen/logger.h	Wed Mar 18 15:03:17 2009 +0100
@@ -16,7 +16,7 @@
     void disable();
     bool enabled();
 
-    void attention(const Loc& loc, const char* fmt, ...);
+    void attention(Loc loc, const char* fmt, ...);
 
     struct LoggerScope
     {