-
Notifications
You must be signed in to change notification settings - Fork 29.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
src: don't print garbage errors #4112
Conversation
LGTM. |
if (message.length() == 0) | ||
PrintErrorString("\n"); | ||
else | ||
PrintErrorString("%s\n", *message); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You could simplify this to PrintErrorString("%s\n", *message ? *message : "");
I would print a message like "<toString() threw exception>"
instead of a blank line.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would print a message like
"<toString() threw exception>"
instead of a blank line.
I thought about that, but the current check is insufficient, since empty string is a valid toString()
response. Would you be OK with me using a TryCatch
to actually detect if an error was thrown?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I mean when *message == nullptr
, that means .toString() failed somehow.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That doesn't seem to be the case though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@bnoordhuis is *message == nullptr
for you? If so, it might be platform specific based on #4079 (comment).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah, I missed that it's using node::Utf8Value
(which indeed never returns a nullptr because it returns a pointer to its embedded char array.)
If you use String::Utf8Value
, you should see *message == nullptr
after a .toString() exception.
LGTM once @bnoordhuis is happy with it |
LGTM |
LGTM |
Would you mind if I land this PR? 😄 |
@JungMinu Don't land it yet, as the test fails on Windows. I'd also like @bnoordhuis's input. |
@cjihrig Sorry to bug you, It slipped my mind. 😢 |
IMHO, I think that using a |
If JS throws an object whose toString() method throws, then Node attempts to print an empty message, but actually prints garbage. This commit checks for this case, and prints a message instead.
New CI: https://ci.nodejs.org/job/node-test-pull-request/931/ Made the change to |
CI failures are unrelated. |
LGTM |
If JS throws an object whose toString() method throws, then Node attempts to print an empty message, but actually prints garbage. This commit checks for this case, and prints a message instead. Fixes: #4079 PR-URL: #4112 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Chris Dickinson <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Minwoo Jung <[email protected]>
Thanks, landed in 1ec09b0. |
If JS throws an object whose toString() method throws, then Node attempts to print an empty message, but actually prints garbage. This commit checks for this case, and prints a message instead. Fixes: #4079 PR-URL: #4112 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Chris Dickinson <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Minwoo Jung <[email protected]>
If JS throws an object whose toString() method throws, then Node attempts to print an empty message, but actually prints garbage. This commit checks for this case, and prints a message instead. Fixes: #4079 PR-URL: #4112 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Chris Dickinson <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Minwoo Jung <[email protected]>
If JS throws an object whose toString() method throws, then Node attempts to print an empty message, but actually prints garbage. This commit checks for this case, and prints a message instead. Fixes: #4079 PR-URL: #4112 Reviewed-By: Ben Noordhuis <[email protected]> Reviewed-By: Chris Dickinson <[email protected]> Reviewed-By: James M Snell <[email protected]> Reviewed-By: Minwoo Jung <[email protected]>
If JS throws an object whose
toString()
method throws, then Node attempts to print an empty message, but actually prints garbage. This commit checks for this case, and prints a newline instead.Closes #4079