Make the jsc shell's dumpException() more robust against long exception strings.
authormark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Nov 2018 01:33:40 +0000 (01:33 +0000)
committermark.lam@apple.com <mark.lam@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 23 Nov 2018 01:33:40 +0000 (01:33 +0000)
https://bugs.webkit.org/show_bug.cgi?id=191910
<rdar://problem/46212980>

Reviewed by Michael Saboff.

This only affects the dumping of the exception string in the jsc shell due to
unhandled exceptions or exceptions at shell boot time before any JS code is
running.

* jsc.cpp:
(dumpException):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@238453 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/JavaScriptCore/ChangeLog
Source/JavaScriptCore/jsc.cpp

index 0dc88d8..3fc2f91 100644 (file)
@@ -1,3 +1,18 @@
+2018-11-22  Mark Lam  <mark.lam@apple.com>
+
+        Make the jsc shell's dumpException() more robust against long exception strings.
+        https://bugs.webkit.org/show_bug.cgi?id=191910
+        <rdar://problem/46212980>
+
+        Reviewed by Michael Saboff.
+
+        This only affects the dumping of the exception string in the jsc shell due to
+        unhandled exceptions or exceptions at shell boot time before any JS code is
+        running.
+
+        * jsc.cpp:
+        (dumpException):
+
 2018-11-21  Yusuke Suzuki  <yusukesuzuki@slowstart.org>
 
         [JSC] Drop ARM_TRADITIONAL support in LLInt, baseline JIT, and DFG
index a2cba90..e57af00 100644 (file)
@@ -2302,7 +2302,12 @@ static void dumpException(GlobalObject* globalObject, JSValue exception)
         } \
     } while (false)
 
-    printf("Exception: %s\n", exception.toWTFString(globalObject->globalExec()).utf8().data());
+    auto exceptionString = exception.toWTFString(globalObject->globalExec());
+    Expected<CString, UTF8ConversionError> expectedCString = exceptionString.tryGetUtf8();
+    if (expectedCString)
+        printf("Exception: %s\n", expectedCString.value().data());
+    else
+        printf("Exception: <out of memory while extracting exception string>\n");
 
     Identifier nameID = Identifier::fromString(globalObject->globalExec(), "name");
     CHECK_EXCEPTION();