altos/lisp: Split out read debug, add memory validation
[fw/altos] / src / lisp / ao_lisp_read.c
index 747963ab632b3cdba14d67930c8419b875c8c570..0ca12a81f6fcc843c24ba2f046970f7e8a83a37c 100644 (file)
@@ -15,6 +15,7 @@
 #include "ao_lisp.h"
 #include "ao_lisp_read.h"
 #include <math.h>
+#include <stdlib.h>
 
 static const uint16_t  lex_classes[128] = {
        IGNORE,         /* ^@ */
@@ -445,7 +446,7 @@ _lex(void)
                                                return NUM;
                                        }
                                        if (isfloat && hasdigit) {
-                                               token_float = atof(token_string);
+                                               token_float = strtof(token_string, NULL);
                                                return FLOAT;
                                        }
                                        for (u = 0; u < NUM_NAMED_FLOATS; u++)
@@ -463,7 +464,7 @@ _lex(void)
 static inline int lex(void)
 {
        int     parse_token = _lex();
-       DBGI("token %d (%s)\n", parse_token, token_string);
+       RDBGI("token %d (%s)\n", parse_token, token_string);
        return parse_token;
 }
 
@@ -480,8 +481,8 @@ struct ao_lisp_cons *ao_lisp_read_stack;
 static int
 push_read_stack(int cons, int read_state)
 {
-       DBGI("push read stack %p 0x%x\n", ao_lisp_read_cons, read_state);
-       DBG_IN();
+       RDBGI("push read stack %p 0x%x\n", ao_lisp_read_cons, read_state);
+       RDBG_IN();
        if (cons) {
                ao_lisp_read_stack = ao_lisp_cons_cons(ao_lisp_cons_poly(ao_lisp_read_cons),
                                                       ao_lisp__cons(ao_lisp_int_poly(read_state),
@@ -512,8 +513,8 @@ pop_read_stack(int cons)
                ao_lisp_read_cons_tail = 0;
                ao_lisp_read_stack = 0;
        }
-       DBG_OUT();
-       DBGI("pop read stack %p %d\n", ao_lisp_read_cons, read_state);
+       RDBG_OUT();
+       RDBGI("pop read stack %p %d\n", ao_lisp_read_cons, read_state);
        return read_state;
 }
 
@@ -524,8 +525,7 @@ ao_lisp_read(void)
        char                    *string;
        int                     cons;
        int                     read_state;
-       ao_poly                 v;
-
+       ao_poly                 v = AO_LISP_NIL;
 
        cons = 0;
        read_state = 0;