Send debug messages to debugger console.
authorseangies <seangies@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Sep 2006 21:59:15 +0000 (21:59 +0000)
committerseangies <seangies@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 20 Sep 2006 21:59:15 +0000 (21:59 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16484 268f45cc-cd09-0410-ab3c-d52691b4dbfc

JavaScriptCore/ChangeLog
JavaScriptCore/wtf/Assertions.cpp

index be1a0d0ae9463757444324d589e44e22665079b4..9f3b5ca65d070e8317067b50e20f8628652bbc02 100644 (file)
@@ -1,3 +1,9 @@
+2006-09-20  Sean Gies  <seangies@apple.com>
+
+        Reviewed by Steve Falkenburg.
+
+        * wtf/Assertions.cpp: Debug messages should go into debugger console.
+
 2006-09-20  David Hyatt  <hyatt@apple.com>
 
         Add an implementation of lrint for Win32.
index e501511c92ae7fcd7bda0fe82aa84dd789637bb3..e9163144fabd001f9f663801d5b64baf1ae3d6fb 100644 (file)
 #include <CoreFoundation/CFString.h>
 #endif
 
+#if PLATFORM(WIN)
+#define WINVER 0x0500
+#define _WIN32_WINNT 0x0500
+#include <windows.h>
+#endif
+
 extern "C" {
 
 // This is to work around the "you should use a printf format attribute" warning on GCC
@@ -58,51 +64,82 @@ static void vprintf_stderr_common(const char *format, va_list args)
         CFRelease(str);
         CFRelease(cfFormat);
     } else
+#elif PLATFORM(WIN)
+    if (IsDebuggerPresent())
+    {
+        size_t size = 1024;
+
+        do
+        {
+            char* buffer = (char*)malloc(size);
+
+            if (buffer == NULL)
+                break;
+
+            if (_vsnprintf(buffer, size, format, args) != -1)
+            {
+                OutputDebugStringA(buffer);
+                free(buffer);
+                break;
+            }
+
+            free(buffer);
+            size *= 2;
+        } while (size > 1024);
+    } else
 #endif
         vfprintf_no_warning(stderr, format, args);
 }
 
+static void printf_stderr_common(const char * format, ...)
+{
+    va_list args;
+    va_start(args, format);
+    vprintf_stderr_common(format, args);
+    va_end(args);
+}
+
 void WTFReportAssertionFailure(const char *file, int line, const char *function, const char *assertion)
 {
     if (assertion)
-        fprintf(stderr, "=================\nASSERTION FAILED: %s (%s:%d %s)\n=================\n", assertion, file, line, function);
+        printf_stderr_common("=================\nASSERTION FAILED: %s (%s:%d %s)\n=================\n", assertion, file, line, function);
     else
-        fprintf(stderr, "=================\nSHOULD NEVER BE REACHED (%s:%d %s)\n=================\n", file, line, function);
+        printf_stderr_common("=================\nSHOULD NEVER BE REACHED (%s:%d %s)\n=================\n", file, line, function);
 }
 
 void WTFReportAssertionFailureWithMessage(const char *file, int line, const char *function, const char *assertion, const char *format, ...)
 {
-    fprintf(stderr, "=================\nASSERTION FAILED: ");
+    printf_stderr_common("=================\nASSERTION FAILED: ");
     va_list args;
     va_start(args, format);
     vprintf_stderr_common(format, args);
     va_end(args);
-    fprintf(stderr, "\n%s (%s:%d %s)\n=================\n", assertion, file, line, function);
+    printf_stderr_common("\n%s (%s:%d %s)\n=================\n", assertion, file, line, function);
 }
 
 void WTFReportArgumentAssertionFailure(const char *file, int line, const char *function, const char *argName, const char *assertion)
 {
-    fprintf(stderr, "=================\nARGUMENT BAD: %s, %s (%s:%d %s)\n=================\n", argName, assertion, file, line, function);
+    printf_stderr_common("=================\nARGUMENT BAD: %s, %s (%s:%d %s)\n=================\n", argName, assertion, file, line, function);
 }
 
 void WTFReportFatalError(const char *file, int line, const char *function, const char *format, ...)
 {
-    fprintf(stderr, "=================\nFATAL ERROR: ");
+    printf_stderr_common("=================\nFATAL ERROR: ");
     va_list args;
     va_start(args, format);
     vprintf_stderr_common(format, args);
     va_end(args);
-    fprintf(stderr, "\n(%s:%d %s)\n=================\n", file, line, function);
+    printf_stderr_common("\n(%s:%d %s)\n=================\n", file, line, function);
 }
 
 void WTFReportError(const char *file, int line, const char *function, const char *format, ...)
 {
-    fprintf(stderr, "=================\nERROR: ");
+    printf_stderr_common("=================\nERROR: ");
     va_list args;
     va_start(args, format);
     vprintf_stderr_common(format, args);
     va_end(args);
-    fprintf(stderr, "\n(%s:%d %s)\n=================\n", file, line, function);
+    printf_stderr_common("\n(%s:%d %s)\n=================\n", file, line, function);
 }
 
 void WTFLog(const char*, int, const char*, WTFLogChannel *channel, const char *format, ...)
@@ -115,7 +152,7 @@ void WTFLog(const char*, int, const char*, WTFLogChannel *channel, const char *f
     vprintf_stderr_common(format, args);
     va_end(args);
     if (format[strlen(format) - 1] != '\n')
-        putc('\n', stderr);
+        printf_stderr_common("\n");
 }
 
 } // extern "C"