Update of /cvsroot/super-tux/supertux/src
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17866
Modified Files:
lispreader.cpp
Log Message:
- added some error checking, so that we get more usefull error messages than asserts
Index: lispreader.cpp
===================================================================
RCS file: /cvsroot/super-tux/supertux/src/lispreader.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -d -r1.10 -r1.11
--- lispreader.cpp 25 Mar 2004 11:36:05 -0000 1.10
+++ lispreader.cpp 26 Mar 2004 15:17:10 -0000 1.11
@@ -26,7 +26,7 @@
#include <ctype.h>
#include <stdlib.h>
#include <string.h>
-
+#include "setup.h"
#include "lispreader.h"
#define TOKEN_ERROR -1
@@ -1041,6 +1041,8 @@
lisp_object_t* obj = search_for (name);
if (obj)
{
+ if (!lisp_integer_p(lisp_car(obj)))
+ st_abort("LispReader expected type integer at token: ", name);
*i = lisp_integer(lisp_car(obj));
return true;
}
@@ -1066,6 +1068,8 @@
lisp_object_t* obj = search_for (name);
if (obj)
{
+ if (!lisp_real_p(lisp_car(obj)) && !lisp_integer_p(lisp_car(obj)))
+ st_abort("LispReader expected type real at token: ", name);
*f = lisp_real(lisp_car(obj));
return true;
}
@@ -1080,6 +1084,8 @@
{
while(!lisp_nil_p(obj))
{
+ if (!lisp_string_p(lisp_car(obj)))
+ st_abort("LispReader expected type string at token: ", name);
vec->push_back(lisp_string(lisp_car(obj)));
obj = lisp_cdr(obj);
}
@@ -1096,6 +1102,8 @@
{
while(!lisp_nil_p(obj))
{
+ if (!lisp_integer_p(lisp_car(obj)))
+ st_abort("LispReader expected type integer at token: ", name);
vec->push_back(lisp_integer(lisp_car(obj)));
obj = lisp_cdr(obj);
}
@@ -1126,7 +1134,8 @@
lisp_object_t* obj = search_for (name);
if (obj)
{
-
+ if (!lisp_string_p(lisp_car(obj)))
+ st_abort("LispReader expected type string at token: ", name);
*str = lisp_string(lisp_car(obj));
return true;
}
@@ -1139,6 +1148,8 @@
lisp_object_t* obj = search_for (name);
if (obj)
{
+ if (!lisp_boolean_p(lisp_car(obj)))
+ st_abort("LispReader expected type bool at token: ", name);
*b = lisp_boolean(lisp_car(obj));
return true;
}
|