Prevent segfault when preparser fails due to lack of argument.
authoryangguo@chromium.org <yangguo@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 22 Feb 2012 10:31:32 +0000 (10:31 +0000)
committeryangguo@chromium.org <yangguo@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Wed, 22 Feb 2012 10:31:32 +0000 (10:31 +0000)
BUG=v8:1963
TEST=run preparser with no command line arguments

Review URL: https://chromiumcodereview.appspot.com/9431028

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@10786 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

preparser/preparser-process.cc

index b0aeb81..368f63f 100644 (file)
@@ -200,12 +200,14 @@ void fail(v8::PreParserData* data, const char* message, ...) {
   vfprintf(stderr, message, args);
   va_end(args);
   fflush(stderr);
-  // Print preparser data to stdout.
-  uint32_t size = data->size();
-  fprintf(stderr, "LOG: data size: %u\n", size);
-  if (!WriteBuffer(stdout, data->data(), size)) {
-    perror("ERROR: Writing data");
-    fflush(stderr);
+  if (data != NULL) {
+    // Print preparser data to stdout.
+    uint32_t size = data->size();
+    fprintf(stderr, "LOG: data size: %u\n", size);
+    if (!WriteBuffer(stdout, data->data(), size)) {
+      perror("ERROR: Writing data");
+      fflush(stderr);
+    }
   }
   exit(EXIT_FAILURE);
 }