diff options
Diffstat (limited to 'src/3rdparty/squirrel/squirrel/sqdebug.cpp')
-rw-r--r-- | src/3rdparty/squirrel/squirrel/sqdebug.cpp | 26 |
1 files changed, 18 insertions, 8 deletions
diff --git a/src/3rdparty/squirrel/squirrel/sqdebug.cpp b/src/3rdparty/squirrel/squirrel/sqdebug.cpp index 54f883f4e..109674f1e 100644 --- a/src/3rdparty/squirrel/squirrel/sqdebug.cpp +++ b/src/3rdparty/squirrel/squirrel/sqdebug.cpp @@ -1,6 +1,9 @@ /* see copyright notice in squirrel.h */ + +#include "../../../stdafx.h" + #include <squirrel.h> #include "sqpcheader.h" #include <stdarg.h> @@ -9,6 +12,11 @@ #include "sqclosure.h" #include "sqstring.h" +#include "../../../core/alloc_func.hpp" +#include "../../../string_func.h" + +#include "../../../safeguards.h" + SQRESULT sq_getfunctioninfo(HSQUIRRELVM v,SQInteger level,SQFunctionInfo *fi) { SQInteger cssize = v->_callsstacksize; @@ -60,9 +68,12 @@ void SQVM::Raise_Error(const SQChar *s, ...) { va_list vl; va_start(vl, s); - vsprintf(_sp(rsl((SQInteger)strlen(s)+(NUMBER_MAX_CHAR*2))), s, vl); + size_t len = strlen(s)+(NUMBER_MAX_CHAR*2); + char *buffer = MallocT<char>(len + 1); + vseprintf(buffer, buffer + len, s, vl); va_end(vl); - _lasterror = SQString::Create(_ss(this),_spval,-1); + _lasterror = SQString::Create(_ss(this),buffer,-1); + free(buffer); } void SQVM::Raise_Error(SQObjectPtr &desc) @@ -72,16 +83,15 @@ void SQVM::Raise_Error(SQObjectPtr &desc) SQString *SQVM::PrintObjVal(const SQObject &o) { + char buf[NUMBER_MAX_CHAR+1]; switch(type(o)) { case OT_STRING: return _string(o); case OT_INTEGER: - sprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), SQ_PRINTF64, _integer(o)); - return SQString::Create(_ss(this), _spval); - break; + seprintf(buf, lastof(buf), SQ_PRINTF64, _integer(o)); + return SQString::Create(_ss(this), buf); case OT_FLOAT: - sprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), "%.14g", _float(o)); - return SQString::Create(_ss(this), _spval); - break; + seprintf(buf, lastof(buf), "%.14g", _float(o)); + return SQString::Create(_ss(this), buf); default: return SQString::Create(_ss(this), GetTypeName(o)); } |