altos/lisp: Add floats
[fw/altos] / src / lisp / ao_lisp_eval.c
index 844e7ce7d896a3ca3d6f50a3a927a1cafd1724d5..cfa71fa7584fdf9534967a5698ab532de51bdeee 100644 (file)
@@ -110,6 +110,8 @@ ao_lisp_eval_sexpr(void)
                /* fall through */
        case AO_LISP_BOOL:
        case AO_LISP_INT:
+       case AO_LISP_BIGINT:
+       case AO_LISP_FLOAT:
        case AO_LISP_STRING:
        case AO_LISP_BUILTIN:
        case AO_LISP_LAMBDA:
@@ -270,7 +272,7 @@ ao_lisp_eval_exec(void)
                                DBGI("set "); DBG_POLY(atom); DBG(" = "); DBG_POLY(val); DBG("\n");
                        });
                builtin = ao_lisp_poly_builtin(ao_lisp_v);
-               if (builtin->args & AO_LISP_FUNC_FREE_ARGS && !ao_lisp_stack_marked(ao_lisp_stack) && !ao_lisp_skip_cons_free)
+               if (builtin && builtin->args & AO_LISP_FUNC_FREE_ARGS && !ao_lisp_stack_marked(ao_lisp_stack) && !ao_lisp_skip_cons_free)
                        ao_lisp_cons_free(ao_lisp_poly_cons(ao_lisp_stack->values));
 
                ao_lisp_v = v;