summaryrefslogtreecommitdiff
path: root/src/3rdparty/squirrel/squirrel/sqdebug.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/squirrel/squirrel/sqdebug.cpp')
-rw-r--r--src/3rdparty/squirrel/squirrel/sqdebug.cpp26
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));
}