Fix coverity #29352
[supertux.git] / src / scripting / serialize.cpp
index 59dc46a..ccbfd20 100644 (file)
 #include "lisp/list_iterator.hpp"
 #include "scripting/squirrel_error.hpp"
 
-namespace Scripting {
+namespace scripting {
 
-void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const lisp::Lisp* lisp)
+void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const Reader& lisp)
 {
   using namespace lisp;
 
   if(table_idx < 0)
     table_idx -= 2;
 
-  lisp::ListIterator iter(lisp);
+  lisp::ListIterator iter(&lisp);
   while(iter.next() && iter.lisp() != NULL) {
     const std::string& token = iter.item();
     sq_pushstring(vm, token.c_str(), token.size());
@@ -40,7 +40,7 @@ void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const lisp::Lisp*
     switch(value->get_type()) {
       case Lisp::TYPE_CONS:
         sq_newtable(vm);
-        load_squirrel_table(vm, sq_gettop(vm), iter.lisp());
+        load_squirrel_table(vm, sq_gettop(vm), *iter.lisp());
         break;
       case Lisp::TYPE_INTEGER:
         sq_pushinteger(vm, value->get_int());
@@ -64,11 +64,11 @@ void load_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, const lisp::Lisp*
     }
 
     if(SQ_FAILED(sq_createslot(vm, table_idx)))
-      throw Scripting::SquirrelError(vm, "Couldn't create new index");
+      throw scripting::SquirrelError(vm, "Couldn't create new index");
   }
 }
 
-void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, lisp::Writer& writer)
+void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, Writer& writer)
 {
   // offset because of sq_pushnull
   if(table_idx < 0)
@@ -99,8 +99,8 @@ void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, lisp::Writer& writ
       }
       case OT_BOOL: {
         SQBool val;
-        sq_getbool(vm, -1, &val);
-        writer.write(key, val == SQTrue);
+        if(SQ_SUCCEEDED(sq_getbool(vm, -1, &val)))
+          writer.write(key, val == SQTrue);
         break;
       }
       case OT_STRING: {
@@ -128,6 +128,6 @@ void save_squirrel_table(HSQUIRRELVM vm, SQInteger table_idx, lisp::Writer& writ
   sq_pop(vm, 1);
 }
 
-} // namespace Scripting
+} // namespace scripting
 
 /* EOF */