aboutsummaryrefslogtreecommitdiffstats
path: root/erts/emulator/beam/bif.h
diff options
context:
space:
mode:
authorSteve Vinoski <[email protected]>2011-02-22 18:07:57 -0500
committerSverker Eriksson <[email protected]>2011-03-24 16:45:50 +0100
commitb02f03c979cda37e43828cd6e1787649f1d8ca8c (patch)
tree6ebe11e92b89c6a78830db053a14f0f1a5edb63a /erts/emulator/beam/bif.h
parentd9932cbb82954532fb39ffaa05cde74a6ec8869c (diff)
downloadotp-b02f03c979cda37e43828cd6e1787649f1d8ca8c.tar.gz
otp-b02f03c979cda37e43828cd6e1787649f1d8ca8c.tar.bz2
otp-b02f03c979cda37e43828cd6e1787649f1d8ca8c.zip
add support for checking if an ERL_NIF_TERM is an exception
Add the enif_is_exception function to allow callers to determine whether an ERL_NIF_TERM represents an exception. (Currently the only supported exception is badarg since only enif_make_badarg exists, but this will likely be expanded in future releases.) This allows NIF code to call other NIF functions that return ERL_NIF_TERM and properly check to see if the returned terms are exceptions. Without the enif_is_exception function, developers have to create their own means of checking whether a function creates an exception, such as returning boolean success/failure indicators or some other special value indicating that an exception is in effect. The declaration of enif_is_exception in erl_nif_api_funcs.h respects the order of declarations required to keep compatibility on Windows. Add a new test to verify the operation of enif_is_exception. Modify the erl_nif man page to add a description of enif_is_exception and also to clarify the requirements of calling the enif_make_badarg function. If code calls enif_make_badarg, the env passed in gets set with exception information and so the return value of the calling function MUST be the badarg term returned from enif_make_badarg. Also clarify that the result of enif_make_badarg may be passed only to enif_is_exception and not to any other NIF API functions.
Diffstat (limited to 'erts/emulator/beam/bif.h')
0 files changed, 0 insertions, 0 deletions