27
27
} \
28
28
} while(0)
29
29
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
+
30
36
static void default_illegal_callback_fn (const char * str , void * data ) {
31
37
(void )data ;
32
38
fprintf (stderr , "[libsecp256k1] illegal argument: %s\n" , str );
@@ -162,7 +168,7 @@ secp256k1_context* secp256k1_context_clone(const secp256k1_context* ctx) {
162
168
}
163
169
164
170
void secp256k1_context_preallocated_destroy (secp256k1_context * ctx ) {
165
- CHECK (ctx != secp256k1_context_no_precomp );
171
+ ARG_CHECK_NO_RETURN (ctx != secp256k1_context_no_precomp );
166
172
if (ctx != NULL ) {
167
173
secp256k1_ecmult_context_clear (& ctx -> ecmult_ctx );
168
174
secp256k1_ecmult_gen_context_clear (& ctx -> ecmult_gen_ctx );
@@ -177,7 +183,7 @@ void secp256k1_context_destroy(secp256k1_context* ctx) {
177
183
}
178
184
179
185
void 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 );
181
187
if (fun == NULL ) {
182
188
fun = default_illegal_callback_fn ;
183
189
}
@@ -186,7 +192,7 @@ void secp256k1_context_set_illegal_callback(secp256k1_context* ctx, void (*fun)(
186
192
}
187
193
188
194
void 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 );
190
196
if (fun == NULL ) {
191
197
fun = default_error_callback_fn ;
192
198
}
0 commit comments