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)
This commit is contained in:
Frits van Bommel
2009-03-18 15:03:17 +01:00
parent d9f9da4521
commit 434cb74980
7 changed files with 28 additions and 18 deletions

View File

@@ -963,10 +963,9 @@ void Expression::warning(const char *format, ...)
{
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 );
}
}

View File

@@ -109,13 +109,10 @@ void warning(Loc loc, const char *format, ...)
{
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 @@ void verror(Loc loc, const char *format, va_list ap)
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.

View File

@@ -388,6 +388,7 @@ enum MATCH
};
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();

View File

@@ -714,10 +714,9 @@ void Type::warning(Loc loc, const char *format, ...)
{
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 );
}
}

View File

@@ -100,10 +100,9 @@ void Statement::warning(const char *format, ...)
{
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 );
}
}

View File

@@ -71,13 +71,11 @@ namespace Logger
{
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");
}
}

View File

@@ -16,7 +16,7 @@ namespace Logger
void disable();
bool enabled();
void attention(const Loc& loc, const char* fmt, ...);
void attention(Loc loc, const char* fmt, ...);
struct LoggerScope
{