@@ -146,7 +146,8 @@ static void _jl_exception_clear(jl_task_t *ct) JL_NOTSAFEPOINT
146146 */
147147JL_DLLEXPORT jl_value_t * jl_eval_string (const char * str )
148148{
149- jl_value_t * r ;
149+ jl_value_t * r = NULL ;
150+ JL_GC_PUSH1 (& r );
150151 jl_task_t * ct = jl_current_task ;
151152 JL_TRY {
152153 const char filename [] = "none" ;
@@ -161,6 +162,7 @@ JL_DLLEXPORT jl_value_t *jl_eval_string(const char *str)
161162 ct -> ptls -> previous_exception = jl_current_exception ();
162163 r = NULL ;
163164 }
165+ JL_GC_POP ();
164166 return r ;
165167}
166168
@@ -283,7 +285,8 @@ JL_DLLEXPORT const char *jl_string_ptr(jl_value_t *s)
283285 */
284286JL_DLLEXPORT jl_value_t * jl_call (jl_function_t * f , jl_value_t * * args , uint32_t nargs )
285287{
286- jl_value_t * v ;
288+ jl_value_t * v = NULL ;
289+ JL_GC_PUSH1 (& v );
287290 jl_task_t * ct = jl_current_task ;
288291 nargs ++ ; // add f to args
289292 JL_TRY {
@@ -303,6 +306,7 @@ JL_DLLEXPORT jl_value_t *jl_call(jl_function_t *f, jl_value_t **args, uint32_t n
303306 ct -> ptls -> previous_exception = jl_current_exception ();
304307 v = NULL ;
305308 }
309+ JL_GC_POP ();
306310 return v ;
307311}
308312
@@ -316,7 +320,8 @@ JL_DLLEXPORT jl_value_t *jl_call(jl_function_t *f, jl_value_t **args, uint32_t n
316320 */
317321JL_DLLEXPORT jl_value_t * jl_call0 (jl_function_t * f )
318322{
319- jl_value_t * v ;
323+ jl_value_t * v = NULL ;
324+ JL_GC_PUSH1 (& v );
320325 jl_task_t * ct = jl_current_task ;
321326 JL_TRY {
322327 JL_GC_PUSH1 (& f );
@@ -331,6 +336,7 @@ JL_DLLEXPORT jl_value_t *jl_call0(jl_function_t *f)
331336 ct -> ptls -> previous_exception = jl_current_exception ();
332337 v = NULL ;
333338 }
339+ JL_GC_POP ();
334340 return v ;
335341}
336342
@@ -345,7 +351,8 @@ JL_DLLEXPORT jl_value_t *jl_call0(jl_function_t *f)
345351 */
346352JL_DLLEXPORT jl_value_t * jl_call1 (jl_function_t * f , jl_value_t * a )
347353{
348- jl_value_t * v ;
354+ jl_value_t * v = NULL ;
355+ JL_GC_PUSH1 (& v );
349356 jl_task_t * ct = jl_current_task ;
350357 JL_TRY {
351358 jl_value_t * * argv ;
@@ -363,6 +370,7 @@ JL_DLLEXPORT jl_value_t *jl_call1(jl_function_t *f, jl_value_t *a)
363370 ct -> ptls -> previous_exception = jl_current_exception ();
364371 v = NULL ;
365372 }
373+ JL_GC_POP ();
366374 return v ;
367375}
368376
@@ -378,7 +386,8 @@ JL_DLLEXPORT jl_value_t *jl_call1(jl_function_t *f, jl_value_t *a)
378386 */
379387JL_DLLEXPORT jl_value_t * jl_call2 (jl_function_t * f , jl_value_t * a , jl_value_t * b )
380388{
381- jl_value_t * v ;
389+ jl_value_t * v = NULL ;
390+ JL_GC_PUSH1 (& v );
382391 jl_task_t * ct = jl_current_task ;
383392 JL_TRY {
384393 jl_value_t * * argv ;
@@ -397,6 +406,7 @@ JL_DLLEXPORT jl_value_t *jl_call2(jl_function_t *f, jl_value_t *a, jl_value_t *b
397406 ct -> ptls -> previous_exception = jl_current_exception ();
398407 v = NULL ;
399408 }
409+ JL_GC_POP ();
400410 return v ;
401411}
402412
@@ -414,7 +424,8 @@ JL_DLLEXPORT jl_value_t *jl_call2(jl_function_t *f, jl_value_t *a, jl_value_t *b
414424JL_DLLEXPORT jl_value_t * jl_call3 (jl_function_t * f , jl_value_t * a ,
415425 jl_value_t * b , jl_value_t * c )
416426{
417- jl_value_t * v ;
427+ jl_value_t * v = NULL ;
428+ JL_GC_PUSH1 (& v );
418429 jl_task_t * ct = jl_current_task ;
419430 JL_TRY {
420431 jl_value_t * * argv ;
@@ -434,6 +445,7 @@ JL_DLLEXPORT jl_value_t *jl_call3(jl_function_t *f, jl_value_t *a,
434445 ct -> ptls -> previous_exception = jl_current_exception ();
435446 v = NULL ;
436447 }
448+ JL_GC_POP ();
437449 return v ;
438450}
439451
@@ -446,7 +458,8 @@ JL_DLLEXPORT jl_value_t *jl_call3(jl_function_t *f, jl_value_t *a,
446458 */
447459JL_DLLEXPORT jl_value_t * jl_get_field (jl_value_t * o , const char * fld )
448460{
449- jl_value_t * v ;
461+ jl_value_t * v = NULL ;
462+ JL_GC_PUSH1 (& v );
450463 JL_TRY {
451464 jl_value_t * s = (jl_value_t * )jl_symbol (fld );
452465 int i = jl_field_index ((jl_datatype_t * )jl_typeof (o ), (jl_sym_t * )s , 1 );
@@ -457,6 +470,7 @@ JL_DLLEXPORT jl_value_t *jl_get_field(jl_value_t *o, const char *fld)
457470 jl_current_task -> ptls -> previous_exception = jl_current_exception ();
458471 v = NULL ;
459472 }
473+ JL_GC_POP ();
460474 return v ;
461475}
462476
0 commit comments