Skip to content

Commit c06ac66

Browse files
legendecasmarco-ippolito
authored andcommitted
src: fix undefined script name in error source
PR-URL: #56502 Reviewed-By: Joyee Cheung <joyeec9h3@gmail.com> Reviewed-By: James M Snell <jasnell@gmail.com>
1 parent 4274c6a commit c06ac66

6 files changed

Lines changed: 43 additions & 2 deletions

File tree

‎src/node_errors.cc‎

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -135,8 +135,13 @@ static std::string GetErrorSource(Isolate* isolate,
135135

136136
// Print (filename):(line number): (message).
137137
ScriptOrigin origin = message->GetScriptOrigin();
138-
node::Utf8Value filename(isolate, message->GetScriptResourceName());
139-
constchar* filename_string = *filename;
138+
std::string filename_string;
139+
if (message->GetScriptResourceName()->IsUndefined()) {
140+
filename_string = "<anonymous_script>";
141+
} else {
142+
node::Utf8Value filename(isolate, message->GetScriptResourceName());
143+
filename_string = filename.ToString();
144+
}
140145
int linenum = message->GetLineNumber(context).FromJust();
141146

142147
int script_start = (linenum - origin.LineOffset()) == 1
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
'use strict';
2+
require('../../common');
3+
4+
Error.stackTraceLimit=1;
5+
eval(`
6+
7+
throw new Error('error in anonymous script');
8+
9+
`)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<anonymous_script>:*
2+
throw new Error('error in anonymous script');
3+
^
4+
5+
Error: error in anonymous script
6+
at eval (eval at <anonymous> (*throw_in_eval_anonymous.js:*:*), <anonymous>:*:*)
7+
8+
Node.js *

‎test/fixtures/errors/throw_in_eval_named.js‎

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
evalscript.js:*
2+
throw new Error('error in named script');
3+
^
4+
5+
Error: error in named script
6+
at eval (evalscript.js:*:*)
7+
8+
Node.js *

‎test/parallel/test-node-output-errors.mjs‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ describe('errors output', { concurrency: true }, () => {
6060
{name: 'errors/if-error-has-good-stack.js',transform: errTransform},
6161
{name: 'errors/throw_custom_error.js',transform: errTransform},
6262
{name: 'errors/throw_error_with_getter_throw.js',transform: errTransform},
63+
{name: 'errors/throw_in_eval_anonymous.js',transform: errTransform},
64+
{name: 'errors/throw_in_eval_named.js',transform: errTransform},
6365
{name: 'errors/throw_in_line_with_tabs.js',transform: errTransform},
6466
{name: 'errors/throw_non_error.js',transform: errTransform},
6567
{name: 'errors/throw_null.js',transform: errTransform},

0 commit comments

Comments
 (0)