From 9785017b7c28e6575b17654b3553416890bd6dc9 Mon Sep 17 00:00:00 2001 From: Jeff Bezanson Date: Thu, 13 Mar 2014 17:53:41 -0400 Subject: [PATCH] add calls to jl_exception_clear to interface functions with try blocks this prevents swallowed exceptions from appearing as errors when you call jl_exception_occurred. --- src/jlapi.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/jlapi.c b/src/jlapi.c index 5bd8d968ee493..b3105bd203642 100644 --- a/src/jlapi.c +++ b/src/jlapi.c @@ -71,6 +71,7 @@ DLLEXPORT void *jl_eval_string(char *str) JL_GC_PUSH1(&ast); r = jl_toplevel_eval(ast); JL_GC_POP(); + jl_exception_clear(); } JL_CATCH { //jl_show(jl_stderr_obj(), jl_exception_in_transit); @@ -142,6 +143,7 @@ DLLEXPORT jl_value_t *jl_call(jl_function_t *f, jl_value_t **args, int32_t nargs argv[i] = args[i-1]; v = jl_apply(f, args, nargs); JL_GC_POP(); + jl_exception_clear(); } JL_CATCH { v = NULL; @@ -156,6 +158,7 @@ DLLEXPORT jl_value_t *jl_call0(jl_function_t *f) JL_GC_PUSH1(&f); v = jl_apply(f, NULL, 0); JL_GC_POP(); + jl_exception_clear(); } JL_CATCH { v = NULL; @@ -170,6 +173,7 @@ DLLEXPORT jl_value_t *jl_call1(jl_function_t *f, jl_value_t *a) JL_GC_PUSH2(&f,&a); v = jl_apply(f, &a, 1); JL_GC_POP(); + jl_exception_clear(); } JL_CATCH { v = NULL; @@ -185,6 +189,7 @@ DLLEXPORT jl_value_t *jl_call2(jl_function_t *f, jl_value_t *a, jl_value_t *b) jl_value_t *args[2] = {a,b}; v = jl_apply(f, args, 2); JL_GC_POP(); + jl_exception_clear(); } JL_CATCH { v = NULL; @@ -200,6 +205,7 @@ DLLEXPORT jl_value_t *jl_call3(jl_function_t *f, jl_value_t *a, jl_value_t *b, j jl_value_t *args[3] = {a,b,c}; v = jl_apply(f, args, 3); JL_GC_POP(); + jl_exception_clear(); } JL_CATCH { v = NULL; @@ -223,6 +229,7 @@ DLLEXPORT jl_value_t *jl_get_field(jl_value_t *o, char *fld) jl_value_t *s = (jl_value_t*)jl_symbol(fld); int i = jl_field_index((jl_datatype_t*)jl_typeof(o), (jl_sym_t*)s, 1); v = jl_get_nth_field(o, i); + jl_exception_clear(); } JL_CATCH { v = NULL;