X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fscripting%2Fserialize.cpp;h=ccbfd20522b61b1916cbf228e4a9cf760c09ed1d;hb=8beeeba905826ff6cea39cdaaa71c1e6ea70d825;hp=59dc46a996f014c8d90e850ef0f1e8d5b11b5314;hpb=08813a74da6ac1fd045a105e4e8105f1d7f716f0;p=supertux.git diff --git a/src/scripting/serialize.cpp b/src/scripting/serialize.cpp index 59dc46a99..ccbfd2052 100644 --- a/src/scripting/serialize.cpp +++ b/src/scripting/serialize.cpp @@ -22,16 +22,16 @@ #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 */