Commit 9864c1a4 authored by darin's avatar darin

Reviewed by Adam.

        * wtf/Assertions.cpp: Changed assertion formatting to omit the "======"
        lines so you can see more assertions in less space. Also improved format
        of file/line information so it works with more development environments.



git-svn-id: http://svn.webkit.org/repository/webkit/trunk@16782 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent 4636cca1
2006-10-05 Darin Adler <darin@apple.com>
Reviewed by Adam.
* wtf/Assertions.cpp: Changed assertion formatting to omit the "======"
lines so you can see more assertions in less space. Also improved format
of file/line information so it works with more development environments.
2006-10-04 Kevin McCullough <KMcCullough@apple.com>
Reviewed by GGaren
......
......@@ -38,15 +38,16 @@
#define WINVER 0x0500
#define _WIN32_WINNT 0x0500
#include <windows.h>
#include <crtdbg.h>
#endif
extern "C" {
// This is to work around the "you should use a printf format attribute" warning on GCC
// We can't use _attribute__ ((format (printf, 2, 3))) since we allow %@
static int (* vfprintf_no_warning)(FILE *, const char *, va_list) = vfprintf;
static int (* vfprintf_no_warning)(FILE *, const char*, va_list) = vfprintf;
static void vprintf_stderr_common(const char *format, va_list args)
static void vprintf_stderr_common(const char* format, va_list args)
{
#if PLATFORM(MAC)
if (strstr(format, "%@")) {
......@@ -54,7 +55,7 @@ static void vprintf_stderr_common(const char *format, va_list args)
CFStringRef str = CFStringCreateWithFormatAndArguments(NULL, NULL, cfFormat, args);
int length = CFStringGetMaximumSizeForEncoding(CFStringGetLength(str), kCFStringEncodingUTF8);
char *buffer = (char *)malloc(length + 1);
char* buffer = (char*)malloc(length + 1);
CFStringGetCString(str, buffer, length, kCFStringEncodingUTF8);
......@@ -65,19 +66,16 @@ static void vprintf_stderr_common(const char *format, va_list args)
CFRelease(cfFormat);
} else
#elif PLATFORM(WIN)
if (IsDebuggerPresent())
{
if (IsDebuggerPresent()) {
size_t size = 1024;
do
{
do {
char* buffer = (char*)malloc(size);
if (buffer == NULL)
break;
if (_vsnprintf(buffer, size, format, args) != -1)
{
if (_vsnprintf(buffer, size, format, args) != -1) {
OutputDebugStringA(buffer);
free(buffer);
break;
......@@ -91,7 +89,7 @@ static void vprintf_stderr_common(const char *format, va_list args)
vfprintf_no_warning(stderr, format, args);
}
static void printf_stderr_common(const char * format, ...)
static void printf_stderr_common(const char* format, ...)
{
va_list args;
va_start(args, format);
......@@ -99,50 +97,64 @@ static void printf_stderr_common(const char * format, ...)
va_end(args);
}
void WTFReportAssertionFailure(const char *file, int line, const char *function, const char *assertion)
static void printCallSite(const char* file, int line, const char* function)
{
#if PLATFORM(WIN)
_CrtDbgReport(_CRT_WARN, file, line, NULL, "%s\n", function);
#else
printf_stderr_common("(%s:%d %s)\n", file, line, function);
#endif
}
void WTFReportAssertionFailure(const char* file, int line, const char* function, const char* assertion)
{
if (assertion)
printf_stderr_common("=================\nASSERTION FAILED: %s (%s:%d %s)\n=================\n", assertion, file, line, function);
printf_stderr_common("ASSERTION FAILED: %s\n", assertion);
else
printf_stderr_common("=================\nSHOULD NEVER BE REACHED (%s:%d %s)\n=================\n", file, line, function);
printf_stderr_common("SHOULD NEVER BE REACHED\n");
printCallSite(file, line, function);
}
void WTFReportAssertionFailureWithMessage(const char *file, int line, const char *function, const char *assertion, const char *format, ...)
void WTFReportAssertionFailureWithMessage(const char* file, int line, const char* function, const char* assertion, const char* format, ...)
{
printf_stderr_common("=================\nASSERTION FAILED: ");
printf_stderr_common("ASSERTION FAILED: ");
va_list args;
va_start(args, format);
vprintf_stderr_common(format, args);
va_end(args);
printf_stderr_common("\n%s (%s:%d %s)\n=================\n", assertion, file, line, function);
printf_stderr_common("\n%s\n", assertion);
printCallSite(file, line, function);
}
void WTFReportArgumentAssertionFailure(const char *file, int line, const char *function, const char *argName, const char *assertion)
void WTFReportArgumentAssertionFailure(const char* file, int line, const char* function, const char* argName, const char* assertion)
{
printf_stderr_common("=================\nARGUMENT BAD: %s, %s (%s:%d %s)\n=================\n", argName, assertion, file, line, function);
printf_stderr_common("ARGUMENT BAD: %s, %s\n", argName, assertion);
printCallSite(file, line, function);
}
void WTFReportFatalError(const char *file, int line, const char *function, const char *format, ...)
void WTFReportFatalError(const char* file, int line, const char* function, const char* format, ...)
{
printf_stderr_common("=================\nFATAL ERROR: ");
printf_stderr_common("FATAL ERROR: ");
va_list args;
va_start(args, format);
vprintf_stderr_common(format, args);
va_end(args);
printf_stderr_common("\n(%s:%d %s)\n=================\n", file, line, function);
printf_stderr_common("\n");
printCallSite(file, line, function);
}
void WTFReportError(const char *file, int line, const char *function, const char *format, ...)
void WTFReportError(const char* file, int line, const char* function, const char* format, ...)
{
printf_stderr_common("=================\nERROR: ");
printf_stderr_common("ERROR: ");
va_list args;
va_start(args, format);
vprintf_stderr_common(format, args);
va_end(args);
printf_stderr_common("\n(%s:%d %s)\n=================\n", file, line, function);
printf_stderr_common("\n");
printCallSite(file, line, function);
}
void WTFLog(const char*, int, const char*, WTFLogChannel *channel, const char *format, ...)
void WTFLog(const char*, int, const char*, WTFLogChannel *channel, const char* format, ...)
{
if (channel->state != WTFLogChannelOn)
return;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment