X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/5c19dc3ae3bd8e40a9c028b0deddd50ff337692c..refs/heads/master:/OSX/libsecurity_cdsa_utilities/lib/cssmbridge.h diff --git a/OSX/libsecurity_cdsa_utilities/lib/cssmbridge.h b/OSX/libsecurity_cdsa_utilities/lib/cssmbridge.h index f2f92dbd..73e0d4b2 100644 --- a/OSX/libsecurity_cdsa_utilities/lib/cssmbridge.h +++ b/OSX/libsecurity_cdsa_utilities/lib/cssmbridge.h @@ -32,10 +32,8 @@ #include #include - namespace Security { - // // API boilerplate macros. These provide a frame for C++ code that is impermeable to exceptions. // Usage: @@ -46,7 +44,12 @@ namespace Security { // END_API0 // completely ignores exceptions; falls through in all cases // END_API1(bad) // return (bad) on exception; fall through on success // -#define BEGIN_API try { +#define BEGIN_API try { \ + static dispatch_once_t countToken; \ + countLegacyAPI(&countToken, __FUNCTION__); + +#define BEGIN_API_NO_METRICS try { + #define END_API(base) } \ catch (const CommonError &err) { return CssmError::cssmError(err, CSSM_ ## base ## _BASE_ERROR); } \ catch (const std::bad_alloc &) { return CssmError::cssmError(CSSM_ERRCODE_MEMORY_ERROR, CSSM_ ## base ## _BASE_ERROR); } \