diff options
author | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1998-11-21 17:00:44 +0000 |
---|---|---|
committer | Mikael Djurfeldt <djurfeldt@nada.kth.se> | 1998-11-21 17:00:44 +0000 |
commit | 9b07e212d55df62a37b47ec781f9a16ebe05f74a (patch) | |
tree | ef7cbf0fb8c2b3c19fa49fb60f9ac2c736c43bdb | |
parent | b325a6c8ac5c62a6642caa0f783080ee95bea59e (diff) | |
download | guile-9b07e212d55df62a37b47ec781f9a16ebe05f74a.tar.gz |
* eval.c (SCM_CEVAL): Jump to badfun if trying to apply a struct
which isn't an operator.
(SCM_APPLY): Ditto, but jump to badproc.
-rw-r--r-- | libguile/eval.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/libguile/eval.c b/libguile/eval.c index 31014b3e4..77e639847 100644 --- a/libguile/eval.c +++ b/libguile/eval.c @@ -2145,7 +2145,9 @@ evapply: env = EXTEND_ENV (SCM_CAR (x), SCM_EOL, SCM_ENV (proc)); goto cdrxbegin; case scm_tcs_cons_gloc: - if (SCM_I_OPERATORP (proc)) + if (!SCM_I_OPERATORP (proc)) + goto badfun; + else { x = (SCM_I_ENTITYP (proc) ? SCM_ENTITY_PROC_0 (proc) @@ -2290,7 +2292,9 @@ evapply: case scm_tc7_contin: scm_call_continuation (proc, t.arg1); case scm_tcs_cons_gloc: - if (SCM_I_OPERATORP (proc)) + if (!SCM_I_OPERATORP (proc)) + goto badfun; + else { x = (SCM_I_ENTITYP (proc) ? SCM_ENTITY_PROC_1 (proc) @@ -2389,7 +2393,9 @@ evapply: goto evap3; */ #endif case scm_tcs_cons_gloc: - if (SCM_I_OPERATORP (proc)) + if (!SCM_I_OPERATORP (proc)) + goto badfun; + else { x = (SCM_I_ENTITYP (proc) ? SCM_ENTITY_PROC_2 (proc) @@ -2562,7 +2568,9 @@ evapply: goto cdrxbegin; #endif /* DEVAL */ case scm_tcs_cons_gloc: - if (SCM_I_OPERATORP (proc)) + if (!SCM_I_OPERATORP (proc)) + goto badfun; + else { SCM p = (SCM_I_ENTITYP (proc) ? SCM_ENTITY_PROC_3 (proc) @@ -2935,7 +2943,9 @@ tail: goto tail; #endif case scm_tcs_cons_gloc: - if (SCM_I_OPERATORP (proc)) + if (!SCM_I_OPERATORP (proc)) + goto badproc; + else { #ifdef DEVAL args = (SCM_UNBNDP(arg1) ? SCM_EOL : debug.vect[0].a.args); |