From: Vladimir Kurchatkin Date: Fri, 6 Dec 2013 11:56:37 +0000 (+0400) Subject: src: only access stack of defined errors X-Git-Tag: v0.11.10~48 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=259d44962291bc73ae60919ea6442d762ee139d2;p=platform%2Fupstream%2Fnodejs.git src: only access stack of defined errors Avoid segmentation fault when `undefined` is thrown --- diff --git a/src/node.cc b/src/node.cc index 2d32b12..7f8528c 100644 --- a/src/node.cc +++ b/src/node.cc @@ -1176,8 +1176,15 @@ static void ReportException(Handle er, Handle message) { DisplayExceptionLine(message); - Local trace_value( - er->ToObject()->Get(FIXED_ONE_BYTE_STRING(node_isolate, "stack"))); + Local trace_value; + + if (er->IsUndefined()) { + trace_value = Undefined(node_isolate); + } else { + trace_value = + er->ToObject()->Get(FIXED_ONE_BYTE_STRING(node_isolate, "stack")); + } + String::Utf8Value trace(trace_value); // range errors have a trace member set to undefined diff --git a/test/message/throw_undefined.js b/test/message/throw_undefined.js new file mode 100644 index 0000000..74b08fe --- /dev/null +++ b/test/message/throw_undefined.js @@ -0,0 +1,25 @@ +// Copyright Joyent, Inc. and other Node contributors. +// +// Permission is hereby granted, free of charge, to any person obtaining a +// copy of this software and associated documentation files (the +// "Software"), to deal in the Software without restriction, including +// without limitation the rights to use, copy, modify, merge, publish, +// distribute, sublicense, and/or sell copies of the Software, and to permit +// persons to whom the Software is furnished to do so, subject to the +// following conditions: +// +// The above copyright notice and this permission notice shall be included +// in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, +// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE +// USE OR OTHER DEALINGS IN THE SOFTWARE. + +var common = require('../common'); +var assert = require('assert'); + +throw undefined; diff --git a/test/message/throw_undefined.out b/test/message/throw_undefined.out new file mode 100644 index 0000000..23fc53a --- /dev/null +++ b/test/message/throw_undefined.out @@ -0,0 +1,5 @@ + +*test*message*throw_undefined.js:25 +throw undefined; + ^ +undefined