2727 } \
2828} while(0)
2929
30+ #define ARG_CHECK_NO_RETURN (cond ) do { \
31+ if (EXPECT(!(cond), 0)) { \
32+ secp256k1_callback_call(&ctx->illegal_callback, #cond); \
33+ } \
34+ } while(0)
35+
3036static void default_illegal_callback_fn (const char * str , void * data ) {
3137 (void )data ;
3238 fprintf (stderr , "[libsecp256k1] illegal argument: %s\n" , str );
@@ -162,7 +168,7 @@ secp256k1_context* secp256k1_context_clone(const secp256k1_context* ctx) {
162168}
163169
164170void secp256k1_context_preallocated_destroy (secp256k1_context * ctx ) {
165- CHECK (ctx != secp256k1_context_no_precomp );
171+ ARG_CHECK_NO_RETURN (ctx != secp256k1_context_no_precomp );
166172 if (ctx != NULL ) {
167173 secp256k1_ecmult_context_clear (& ctx -> ecmult_ctx );
168174 secp256k1_ecmult_gen_context_clear (& ctx -> ecmult_gen_ctx );
@@ -177,7 +183,7 @@ void secp256k1_context_destroy(secp256k1_context* ctx) {
177183}
178184
179185void secp256k1_context_set_illegal_callback (secp256k1_context * ctx , void (* fun )(const char * message , void * data ), const void * data ) {
180- CHECK (ctx != secp256k1_context_no_precomp );
186+ ARG_CHECK_NO_RETURN (ctx != secp256k1_context_no_precomp );
181187 if (fun == NULL ) {
182188 fun = default_illegal_callback_fn ;
183189 }
@@ -186,7 +192,7 @@ void secp256k1_context_set_illegal_callback(secp256k1_context* ctx, void (*fun)(
186192}
187193
188194void secp256k1_context_set_error_callback (secp256k1_context * ctx , void (* fun )(const char * message , void * data ), const void * data ) {
189- CHECK (ctx != secp256k1_context_no_precomp );
195+ ARG_CHECK_NO_RETURN (ctx != secp256k1_context_no_precomp );
190196 if (fun == NULL ) {
191197 fun = default_error_callback_fn ;
192198 }
0 commit comments