-
Notifications
You must be signed in to change notification settings - Fork 462
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
noexcept control flow issues #419
Comments
DaAitch
added a commit
to DaAitch/node-addon-api
that referenced
this issue
Dec 28, 2018
- adapt `NAPI_THROW`, create `NAPI_THROW_VOID`: either throw or return, never continue - fix `Error::ThrowAsJavaScriptException`: if `napi_throw` fails, either explicitly throw or create fatal error Closes: nodejs#419
kevindavies8
added a commit
to kevindavies8/node-addon-api-Develop
that referenced
this issue
Aug 24, 2022
- adapt `NAPI_THROW`, create `NAPI_THROW_VOID`: either throw or return, never continue - fix `Error::ThrowAsJavaScriptException`: if `napi_throw` fails, either explicitly throw or create fatal error Fixes: nodejs/node-addon-api#419 PR-URL: nodejs/node-addon-api#420 Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Marlyfleitas
added a commit
to Marlyfleitas/node-api-addon-Development
that referenced
this issue
Aug 26, 2022
- adapt `NAPI_THROW`, create `NAPI_THROW_VOID`: either throw or return, never continue - fix `Error::ThrowAsJavaScriptException`: if `napi_throw` fails, either explicitly throw or create fatal error Fixes: nodejs/node-addon-api#419 PR-URL: nodejs/node-addon-api#420 Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
wroy7860
added a commit
to wroy7860/addon-api-benchmark-node
that referenced
this issue
Sep 19, 2022
- adapt `NAPI_THROW`, create `NAPI_THROW_VOID`: either throw or return, never continue - fix `Error::ThrowAsJavaScriptException`: if `napi_throw` fails, either explicitly throw or create fatal error Fixes: nodejs/node-addon-api#419 PR-URL: nodejs/node-addon-api#420 Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
johnfrench3
pushed a commit
to johnfrench3/node-addon-api-git
that referenced
this issue
Aug 11, 2023
- adapt `NAPI_THROW`, create `NAPI_THROW_VOID`: either throw or return, never continue - fix `Error::ThrowAsJavaScriptException`: if `napi_throw` fails, either explicitly throw or create fatal error Fixes: nodejs/node-addon-api#419 PR-URL: nodejs/node-addon-api#420 Reviewed-By: Gabriel Schulhof <gabriel.schulhof@intel.com> Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
I think there are two noexcept issues with control flow.
1.
NAPI_THROW
noexcept control flowLike
NAPI_THROW_IF_FAILED*
,NAPI_THROW
should also always abort control flow, but noexcept definition doesn't have a return so execution continues. All implementations usingNAPI_THROW
have a trailingreturn
statement, so there is no bug, but I'd say it's unclean.2. noexcept
ThrowAsJavaScriptException
may produce infinite recursionif
napi_throw
fails, it's likely that all further calls are failing and every time invoke anotherThrowAsJavaScriptException
, so I think this is a fatal case. Recursion is not a good idea, and also ignoring it, so it should fatal abort.The text was updated successfully, but these errors were encountered: