From d2de0ef10dad256666ed06e028877934337133bd Mon Sep 17 00:00:00 2001 From: albertodemichelis Date: Fri, 17 Nov 2017 03:55:59 +0800 Subject: [PATCH] fix in blob --- sqstdlib/sqstdblob.cpp | 8 +++++++- sqstdlib/sqstdblobimpl.h | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/sqstdlib/sqstdblob.cpp b/sqstdlib/sqstdblob.cpp index 67e5f3c..261b938 100644 --- a/sqstdlib/sqstdblob.cpp +++ b/sqstdlib/sqstdblob.cpp @@ -82,6 +82,12 @@ static SQInteger _blob__get(HSQUIRRELVM v) { SETUP_BLOB(v); SQInteger idx; + + if ((sq_gettype(v, 2) & SQOBJECT_NUMERIC) == 0) + { + sq_pushnull(v); + return sq_throwobject(v); + } sq_getinteger(v,2,&idx); if(idx < 0 || idx >= self->Len()) return sq_throwerror(v,_SC("index out of range")); @@ -168,7 +174,7 @@ static const SQRegFunction _blob_methods[] = { _DECL_BLOB_FUNC(swap2,1,_SC("x")), _DECL_BLOB_FUNC(swap4,1,_SC("x")), _DECL_BLOB_FUNC(_set,3,_SC("xnn")), - _DECL_BLOB_FUNC(_get,2,_SC("xn")), + _DECL_BLOB_FUNC(_get,2,_SC("x.")), _DECL_BLOB_FUNC(_typeof,1,_SC("x")), _DECL_BLOB_FUNC(_nexti,2,_SC("x")), _DECL_BLOB_FUNC(_cloned,2,_SC("xx")), diff --git a/sqstdlib/sqstdblobimpl.h b/sqstdlib/sqstdblobimpl.h index 4320e88..bfdaddc 100644 --- a/sqstdlib/sqstdblobimpl.h +++ b/sqstdlib/sqstdblobimpl.h @@ -88,7 +88,7 @@ struct SQBlob : public SQStream return 0; } bool IsValid() { - return _buf?true:false; + return _size == 0 || _buf?true:false; } bool EOS() { return _ptr == _size;