Modified: trunk/Source/WebCore/ChangeLog (139926 => 139927)
--- trunk/Source/WebCore/ChangeLog 2013-01-16 22:39:46 UTC (rev 139926)
+++ trunk/Source/WebCore/ChangeLog 2013-01-16 22:52:45 UTC (rev 139927)
@@ -1,3 +1,15 @@
+2013-01-16 Timothy Hatcher <[email protected]>
+
+ Fix a crash when printing console messages to STDOUT.
+
+ https://bugs.webkit.org/show_bug.cgi?id=107039
+
+ Reviewed by Joseph Pecoraro.
+
+ * page/Console.cpp:
+ (WebCore::internalAddMessage): Don't release the RefPtr early. Also log the line number
+ and convert non-string arguments to strings when printing them.
+
2013-01-16 Kenneth Russell <[email protected]>
Unreviewed, rolling out r139914.
Modified: trunk/Source/WebCore/page/Console.cpp (139926 => 139927)
--- trunk/Source/WebCore/page/Console.cpp 2013-01-16 22:39:46 UTC (rev 139926)
+++ trunk/Source/WebCore/page/Console.cpp 2013-01-16 22:52:45 UTC (rev 139927)
@@ -201,7 +201,7 @@
String message;
bool gotMessage = arguments->getFirstArgumentAsString(message);
- InspectorInstrumentation::addMessageToConsole(page, ConsoleAPIMessageSource, type, level, message, state, arguments.release());
+ InspectorInstrumentation::addMessageToConsole(page, ConsoleAPIMessageSource, type, level, message, state, arguments);
if (!page->settings() || page->settings()->privateBrowsingEnabled())
return;
@@ -210,14 +210,14 @@
page->chrome()->client()->addMessageToConsole(ConsoleAPIMessageSource, type, level, message, lastCaller.lineNumber(), lastCaller.sourceURL());
if (printExceptions) {
- printSourceURLAndLine(lastCaller.sourceURL(), 0);
+ printSourceURLAndLine(lastCaller.sourceURL(), lastCaller.lineNumber());
printMessageSourceAndLevelPrefix(ConsoleAPIMessageSource, level);
for (unsigned i = 0; i < arguments->argumentCount(); ++i) {
- String argAsString;
- if (arguments->argumentAt(i).getString(arguments->globalState(), argAsString))
- printf(" %s", argAsString.utf8().data());
+ String argAsString = arguments->argumentAt(i).toString(arguments->globalState());
+ printf(" %s", argAsString.utf8().data());
}
+
printf("\n");
}