summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/game_text.cpp2
-rw-r--r--src/script/api/script_admin.cpp7
-rw-r--r--src/script/api/script_controller.cpp14
-rw-r--r--src/script/api/script_event_types.cpp2
-rw-r--r--src/script/api/script_text.cpp7
-rw-r--r--src/script/script_info.cpp24
-rw-r--r--src/script/script_info_dummy.cpp4
-rw-r--r--src/script/script_instance.cpp13
-rw-r--r--src/script/squirrel.cpp28
-rw-r--r--src/script/squirrel.hpp4
-rw-r--r--src/script/squirrel_helper.hpp10
-rw-r--r--src/script/squirrel_std.cpp2
-rw-r--r--src/stdafx.h4
13 files changed, 53 insertions, 68 deletions
diff --git a/src/game/game_text.cpp b/src/game/game_text.cpp
index d4a137904..691577cbd 100644
--- a/src/game/game_text.cpp
+++ b/src/game/game_text.cpp
@@ -361,7 +361,7 @@ void RegisterGameTranslation(Squirrel *engine)
int idx = 0;
for (const char * const *p = _current_data->string_names.Begin(); p != _current_data->string_names.End(); p++, idx++) {
- sq_pushstring(vm, OTTD2SQ(*p), -1);
+ sq_pushstring(vm, *p, -1);
sq_pushinteger(vm, idx);
sq_rawset(vm, -3);
}
diff --git a/src/script/api/script_admin.cpp b/src/script/api/script_admin.cpp
index feecd11db..f6c41387b 100644
--- a/src/script/api/script_admin.cpp
+++ b/src/script/api/script_admin.cpp
@@ -37,12 +37,9 @@
}
case OT_STRING: {
- const SQChar *res;
- sq_getstring(vm, index, &res);
+ const SQChar *buf;
+ sq_getstring(vm, index, &buf);
- /* @bug if a string longer than 512 characters is given to SQ2OTTD, the
- * internal buffer overflows. */
- const char *buf = SQ2OTTD(res);
size_t len = strlen(buf) + 1;
if (len >= 255) {
ScriptLog::Error("Maximum string length is 254 chars. No data sent.");
diff --git a/src/script/api/script_controller.cpp b/src/script/api/script_controller.cpp
index 65e542c02..aca645c05 100644
--- a/src/script/api/script_controller.cpp
+++ b/src/script/api/script_controller.cpp
@@ -122,7 +122,7 @@ ScriptController::~ScriptController()
if (lib == NULL) {
char error[1024];
seprintf(error, lastof(error), "couldn't find library '%s' with version %d", library, version);
- throw sq_throwerror(vm, OTTD2SQ(error));
+ throw sq_throwerror(vm, error);
}
/* Get the current table/class we belong to */
@@ -142,13 +142,13 @@ ScriptController::~ScriptController()
/* Load the library in a 'fake' namespace, so we can link it to the name the user requested */
sq_pushroottable(vm);
- sq_pushstring(vm, OTTD2SQ(fake_class), -1);
+ sq_pushstring(vm, fake_class, -1);
sq_newclass(vm, SQFalse);
/* Load the library */
if (!engine->LoadScript(vm, lib->GetMainScript(), false)) {
char error[1024];
seprintf(error, lastof(error), "there was a compile error when importing '%s' version %d", library, version);
- throw sq_throwerror(vm, OTTD2SQ(error));
+ throw sq_throwerror(vm, error);
}
/* Create the fake class */
sq_newslot(vm, -3, SQFalse);
@@ -159,15 +159,15 @@ ScriptController::~ScriptController()
/* Find the real class inside the fake class (like 'sets.Vector') */
sq_pushroottable(vm);
- sq_pushstring(vm, OTTD2SQ(fake_class), -1);
+ sq_pushstring(vm, fake_class, -1);
if (SQ_FAILED(sq_get(vm, -2))) {
throw sq_throwerror(vm, _SC("internal error assigning library class"));
}
- sq_pushstring(vm, OTTD2SQ(lib->GetInstanceName()), -1);
+ sq_pushstring(vm, lib->GetInstanceName(), -1);
if (SQ_FAILED(sq_get(vm, -2))) {
char error[1024];
seprintf(error, lastof(error), "unable to find class '%s' in the library '%s' version %d", lib->GetInstanceName(), library, version);
- throw sq_throwerror(vm, OTTD2SQ(error));
+ throw sq_throwerror(vm, error);
}
HSQOBJECT obj;
sq_getstackobj(vm, -1, &obj);
@@ -177,7 +177,7 @@ ScriptController::~ScriptController()
/* Now link the name the user wanted to our 'fake' class */
sq_pushobject(vm, parent);
- sq_pushstring(vm, OTTD2SQ(class_name), -1);
+ sq_pushstring(vm, class_name, -1);
sq_pushobject(vm, obj);
sq_newclass(vm, SQTrue);
sq_newslot(vm, -3, SQFalse);
diff --git a/src/script/api/script_event_types.cpp b/src/script/api/script_event_types.cpp
index 277ce22ec..9a561093a 100644
--- a/src/script/api/script_event_types.cpp
+++ b/src/script/api/script_event_types.cpp
@@ -171,7 +171,7 @@ char *ScriptEventAdminPort::ReadString(HSQUIRRELVM vm, char *p)
}
*p = '\0';
- sq_pushstring(vm, OTTD2SQ(value), -1);
+ sq_pushstring(vm, value, -1);
*p++ = '"';
return p;
diff --git a/src/script/api/script_text.cpp b/src/script/api/script_text.cpp
index 1529d4577..0c2c0516b 100644
--- a/src/script/api/script_text.cpp
+++ b/src/script/api/script_text.cpp
@@ -83,7 +83,7 @@ SQInteger ScriptText::_SetParam(int parameter, HSQUIRRELVM vm)
const SQChar *value;
sq_getstring(vm, -1, &value);
- this->params[parameter] = stredup(SQ2OTTD(value));
+ this->params[parameter] = stredup(value);
ValidateString(this->params[parameter]);
break;
}
@@ -157,9 +157,8 @@ SQInteger ScriptText::_set(HSQUIRRELVM vm)
int32 k;
if (sq_gettype(vm, 2) == OT_STRING) {
- const SQChar *key;
- sq_getstring(vm, 2, &key);
- const char *key_string = SQ2OTTD(key);
+ const SQChar *key_string;
+ sq_getstring(vm, 2, &key_string);
ValidateString(key_string);
if (strncmp(key_string, "param_", 6) != 0 || strlen(key_string) > 8) return SQ_ERROR;
diff --git a/src/script/script_info.cpp b/src/script/script_info.cpp
index 83d3bab8a..b95c6e366 100644
--- a/src/script/script_info.cpp
+++ b/src/script/script_info.cpp
@@ -125,15 +125,14 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm)
/* Read the table, and find all properties we care about */
sq_pushnull(vm);
while (SQ_SUCCEEDED(sq_next(vm, -2))) {
- const SQChar *sqkey;
- if (SQ_FAILED(sq_getstring(vm, -2, &sqkey))) return SQ_ERROR;
- const char *key = SQ2OTTD(sqkey);
+ const SQChar *key;
+ if (SQ_FAILED(sq_getstring(vm, -2, &key))) return SQ_ERROR;
ValidateString(key);
if (strcmp(key, "name") == 0) {
const SQChar *sqvalue;
if (SQ_FAILED(sq_getstring(vm, -1, &sqvalue))) return SQ_ERROR;
- char *name = stredup(SQ2OTTD(sqvalue));
+ char *name = stredup(sqvalue);
char *s;
ValidateString(name);
@@ -146,7 +145,7 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm)
} else if (strcmp(key, "description") == 0) {
const SQChar *sqdescription;
if (SQ_FAILED(sq_getstring(vm, -1, &sqdescription))) return SQ_ERROR;
- config.description = stredup(SQ2OTTD(sqdescription));
+ config.description = stredup(sqdescription);
ValidateString(config.description);
items |= 0x002;
} else if (strcmp(key, "min_value") == 0) {
@@ -230,9 +229,8 @@ SQInteger ScriptInfo::AddSetting(HSQUIRRELVM vm)
SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm)
{
- const SQChar *sq_setting_name;
- if (SQ_FAILED(sq_getstring(vm, -2, &sq_setting_name))) return SQ_ERROR;
- const char *setting_name = SQ2OTTD(sq_setting_name);
+ const SQChar *setting_name;
+ if (SQ_FAILED(sq_getstring(vm, -2, &setting_name))) return SQ_ERROR;
ValidateString(setting_name);
ScriptConfigItem *config = NULL;
@@ -253,15 +251,13 @@ SQInteger ScriptInfo::AddLabels(HSQUIRRELVM vm)
/* Read the table and find all labels */
sq_pushnull(vm);
while (SQ_SUCCEEDED(sq_next(vm, -2))) {
- const SQChar *sq_key;
- const SQChar *sq_label;
- if (SQ_FAILED(sq_getstring(vm, -2, &sq_key))) return SQ_ERROR;
- if (SQ_FAILED(sq_getstring(vm, -1, &sq_label))) return SQ_ERROR;
+ const SQChar *key_string;
+ const SQChar *label;
+ if (SQ_FAILED(sq_getstring(vm, -2, &key_string))) return SQ_ERROR;
+ if (SQ_FAILED(sq_getstring(vm, -1, &label))) return SQ_ERROR;
/* Because squirrel doesn't support identifiers starting with a digit,
* we skip the first character. */
- const char *key_string = SQ2OTTD(sq_key);
int key = atoi(key_string + 1);
- const char *label = SQ2OTTD(sq_label);
ValidateString(label);
/* !Contains() prevents stredup from leaking. */
diff --git a/src/script/script_info_dummy.cpp b/src/script/script_info_dummy.cpp
index b70032f44..79190c82d 100644
--- a/src/script/script_info_dummy.cpp
+++ b/src/script/script_info_dummy.cpp
@@ -41,7 +41,7 @@ void Script_CreateDummyInfo(HSQUIRRELVM vm, const char *type, const char *dir)
dp += seprintf(dp, lastof(dummy_script), "function CreateInstance() { return \"Dummy%s\"; }\n", type);
dp += seprintf(dp, lastof(dummy_script), "} RegisterDummy%s(Dummy%s());\n", type, type);
- const SQChar *sq_dummy_script = OTTD2SQ(dummy_script);
+ const SQChar *sq_dummy_script = dummy_script;
sq_pushroottable(vm);
@@ -97,7 +97,7 @@ void Script_CreateDummy(HSQUIRRELVM vm, StringID string, const char *type)
/* 3) We translate the error message in the character format that Squirrel wants.
* We can use the fact that the wchar string printing also uses %s to print
* old style char strings, which is what was generated during the script generation. */
- const SQChar *sq_dummy_script = OTTD2SQ(dummy_script);
+ const SQChar *sq_dummy_script = dummy_script;
/* And finally we load and run the script */
sq_pushroottable(vm);
diff --git a/src/script/script_instance.cpp b/src/script/script_instance.cpp
index 9cfe05c49..f5039ffbc 100644
--- a/src/script/script_instance.cpp
+++ b/src/script/script_instance.cpp
@@ -46,7 +46,7 @@ ScriptStorage::~ScriptStorage()
static void PrintFunc(bool error_msg, const SQChar *message)
{
/* Convert to OpenTTD internal capable string */
- ScriptController::Print(error_msg, SQ2OTTD(message));
+ ScriptController::Print(error_msg, message);
}
ScriptInstance::ScriptInstance(const char *APIName) :
@@ -367,11 +367,8 @@ static const SaveLoad _script_byte[] = {
_script_sl_byte = SQSL_STRING;
SlObject(NULL, _script_byte);
}
- const SQChar *res;
- sq_getstring(vm, index, &res);
- /* @bug if a string longer than 512 characters is given to SQ2OTTD, the
- * internal buffer overflows. */
- const char *buf = SQ2OTTD(res);
+ const SQChar *buf;
+ sq_getstring(vm, index, &buf);
size_t len = strlen(buf) + 1;
if (len >= 255) {
ScriptLog::Error("Maximum string length is 254 chars. No data saved.");
@@ -569,7 +566,7 @@ bool ScriptInstance::IsPaused()
SlObject(NULL, _script_byte);
static char buf[256];
SlArray(buf, _script_sl_byte, SLE_CHAR);
- if (vm != NULL) sq_pushstring(vm, OTTD2SQ(buf), -1);
+ if (vm != NULL) sq_pushstring(vm, buf, -1);
return true;
}
@@ -658,7 +655,7 @@ bool ScriptInstance::CallLoad()
/* Go to the instance-root */
sq_pushobject(vm, *this->instance);
/* Find the function-name inside the script */
- sq_pushstring(vm, OTTD2SQ("Load"), -1);
+ sq_pushstring(vm, "Load", -1);
/* Change the "Load" string in a function pointer */
sq_get(vm, -2);
/* Push the main instance as "this" object */
diff --git a/src/script/squirrel.cpp b/src/script/squirrel.cpp
index c50a513f3..44ae52348 100644
--- a/src/script/squirrel.cpp
+++ b/src/script/squirrel.cpp
@@ -38,7 +38,7 @@ void Squirrel::CompileError(HSQUIRRELVM vm, const SQChar *desc, const SQChar *so
engine->crashed = true;
SQPrintFunc *func = engine->print_func;
if (func == NULL) {
- DEBUG(misc, 0, "[Squirrel] Compile error: %s", SQ2OTTD(buf));
+ DEBUG(misc, 0, "[Squirrel] Compile error: %s", buf);
} else {
(*func)(true, buf);
}
@@ -121,7 +121,7 @@ void Squirrel::PrintFunc(HSQUIRRELVM vm, const SQChar *s, ...)
void Squirrel::AddMethod(const char *method_name, SQFUNCTION proc, uint nparam, const char *params, void *userdata, int size)
{
- sq_pushstring(this->vm, OTTD2SQ(method_name), -1);
+ sq_pushstring(this->vm, method_name, -1);
if (size != 0) {
void *ptr = sq_newuserdata(vm, size);
@@ -129,21 +129,21 @@ void Squirrel::AddMethod(const char *method_name, SQFUNCTION proc, uint nparam,
}
sq_newclosure(this->vm, proc, size != 0 ? 1 : 0);
- if (nparam != 0) sq_setparamscheck(this->vm, nparam, OTTD2SQ(params));
- sq_setnativeclosurename(this->vm, -1, OTTD2SQ(method_name));
+ if (nparam != 0) sq_setparamscheck(this->vm, nparam, params);
+ sq_setnativeclosurename(this->vm, -1, method_name);
sq_newslot(this->vm, -3, SQFalse);
}
void Squirrel::AddConst(const char *var_name, int value)
{
- sq_pushstring(this->vm, OTTD2SQ(var_name), -1);
+ sq_pushstring(this->vm, var_name, -1);
sq_pushinteger(this->vm, value);
sq_newslot(this->vm, -3, SQTrue);
}
void Squirrel::AddConst(const char *var_name, bool value)
{
- sq_pushstring(this->vm, OTTD2SQ(var_name), -1);
+ sq_pushstring(this->vm, var_name, -1);
sq_pushbool(this->vm, value);
sq_newslot(this->vm, -3, SQTrue);
}
@@ -151,15 +151,15 @@ void Squirrel::AddConst(const char *var_name, bool value)
void Squirrel::AddClassBegin(const char *class_name)
{
sq_pushroottable(this->vm);
- sq_pushstring(this->vm, OTTD2SQ(class_name), -1);
+ sq_pushstring(this->vm, class_name, -1);
sq_newclass(this->vm, SQFalse);
}
void Squirrel::AddClassBegin(const char *class_name, const char *parent_class)
{
sq_pushroottable(this->vm);
- sq_pushstring(this->vm, OTTD2SQ(class_name), -1);
- sq_pushstring(this->vm, OTTD2SQ(parent_class), -1);
+ sq_pushstring(this->vm, class_name, -1);
+ sq_pushstring(this->vm, parent_class, -1);
if (SQ_FAILED(sq_get(this->vm, -3))) {
DEBUG(misc, 0, "[squirrel] Failed to initialize class '%s' based on parent class '%s'", class_name, parent_class);
DEBUG(misc, 0, "[squirrel] Make sure that '%s' exists before trying to define '%s'", parent_class, class_name);
@@ -181,7 +181,7 @@ bool Squirrel::MethodExists(HSQOBJECT instance, const char *method_name)
/* Go to the instance-root */
sq_pushobject(this->vm, instance);
/* Find the function-name inside the script */
- sq_pushstring(this->vm, OTTD2SQ(method_name), -1);
+ sq_pushstring(this->vm, method_name, -1);
if (SQ_FAILED(sq_get(this->vm, -2))) {
sq_settop(this->vm, top);
return false;
@@ -232,7 +232,7 @@ bool Squirrel::CallMethod(HSQOBJECT instance, const char *method_name, HSQOBJECT
/* Go to the instance-root */
sq_pushobject(this->vm, instance);
/* Find the function-name inside the script */
- sq_pushstring(this->vm, OTTD2SQ(method_name), -1);
+ sq_pushstring(this->vm, method_name, -1);
if (SQ_FAILED(sq_get(this->vm, -2))) {
DEBUG(misc, 0, "[squirrel] Could not find '%s' in the class", method_name);
sq_settop(this->vm, top);
@@ -293,9 +293,9 @@ bool Squirrel::CallBoolMethod(HSQOBJECT instance, const char *method_name, bool
char *class_name2 = (char *)alloca(len);
seprintf(class_name2, class_name2 + len - 1, "%s%s", engine->GetAPIName(), class_name);
- sq_pushstring(vm, OTTD2SQ(class_name2), -1);
+ sq_pushstring(vm, class_name2, -1);
} else {
- sq_pushstring(vm, OTTD2SQ(class_name), -1);
+ sq_pushstring(vm, class_name, -1);
}
if (SQ_FAILED(sq_get(vm, -2))) {
@@ -515,7 +515,7 @@ SQRESULT Squirrel::LoadFile(HSQUIRRELVM vm, const char *filename, SQBool printer
break;
}
- if (SQ_SUCCEEDED(sq_compile(vm, func, &f, OTTD2SQ(filename), printerror))) {
+ if (SQ_SUCCEEDED(sq_compile(vm, func, &f, filename, printerror))) {
FioFCloseFile(file);
return SQ_OK;
}
diff --git a/src/script/squirrel.hpp b/src/script/squirrel.hpp
index 4fdde85a1..9e1d113a8 100644
--- a/src/script/squirrel.hpp
+++ b/src/script/squirrel.hpp
@@ -199,7 +199,7 @@ public:
/**
* Convert a Squirrel-object to a string.
*/
- static const char *ObjectToString(HSQOBJECT *ptr) { return SQ2OTTD(sq_objtostring(ptr)); }
+ static const char *ObjectToString(HSQOBJECT *ptr) { return sq_objtostring(ptr); }
/**
* Convert a Squirrel-object to an integer.
@@ -230,7 +230,7 @@ public:
/**
* Throw a Squirrel error that will be nicely displayed to the user.
*/
- void ThrowError(const char *error) { sq_throwerror(this->vm, OTTD2SQ(error)); }
+ void ThrowError(const char *error) { sq_throwerror(this->vm, error); }
/**
* Release a SQ object.
diff --git a/src/script/squirrel_helper.hpp b/src/script/squirrel_helper.hpp
index 760d6c3bf..7a4bf7e08 100644
--- a/src/script/squirrel_helper.hpp
+++ b/src/script/squirrel_helper.hpp
@@ -88,8 +88,8 @@ namespace SQConvert {
template <> inline int Return<int64> (HSQUIRRELVM vm, int64 res) { sq_pushinteger(vm, res); return 1; }
template <> inline int Return<Money> (HSQUIRRELVM vm, Money res) { sq_pushinteger(vm, res); return 1; }
template <> inline int Return<bool> (HSQUIRRELVM vm, bool res) { sq_pushbool (vm, res); return 1; }
- template <> inline int Return<char *> (HSQUIRRELVM vm, char *res) { if (res == NULL) sq_pushnull(vm); else { sq_pushstring(vm, OTTD2SQ(res), -1); free(res); } return 1; }
- template <> inline int Return<const char *>(HSQUIRRELVM vm, const char *res) { if (res == NULL) sq_pushnull(vm); else { sq_pushstring(vm, OTTD2SQ(res), -1); } return 1; }
+ template <> inline int Return<char *> (HSQUIRRELVM vm, char *res) { if (res == NULL) sq_pushnull(vm); else { sq_pushstring(vm, res, -1); free(res); } return 1; }
+ template <> inline int Return<const char *>(HSQUIRRELVM vm, const char *res) { if (res == NULL) sq_pushnull(vm); else { sq_pushstring(vm, res, -1); } return 1; }
template <> inline int Return<void *> (HSQUIRRELVM vm, void *res) { sq_pushuserpointer(vm, res); return 1; }
template <> inline int Return<HSQOBJECT> (HSQUIRRELVM vm, HSQOBJECT res) { sq_pushobject(vm, res); return 1; }
@@ -115,7 +115,7 @@ namespace SQConvert {
const SQChar *tmp;
sq_getstring(vm, -1, &tmp);
- char *tmp_str = stredup(SQ2OTTD(tmp));
+ char *tmp_str = stredup(tmp);
sq_poptop(vm);
*ptr->Append() = (void *)tmp_str;
str_validate(tmp_str, tmp_str + strlen(tmp_str));
@@ -749,7 +749,7 @@ namespace SQConvert {
/* Protect against calls to a non-static method in a static way */
sq_pushroottable(vm);
const char *className = GetClassName<Tcls, Ttype>();
- sq_pushstring(vm, OTTD2SQ(className), -1);
+ sq_pushstring(vm, className, -1);
sq_get(vm, -2);
sq_pushobject(vm, instance);
if (sq_instanceof(vm) != SQTrue) return sq_throwerror(vm, _SC("class method is non-static"));
@@ -791,7 +791,7 @@ namespace SQConvert {
/* Protect against calls to a non-static method in a static way */
sq_pushroottable(vm);
const char *className = GetClassName<Tcls, Ttype>();
- sq_pushstring(vm, OTTD2SQ(className), -1);
+ sq_pushstring(vm, className, -1);
sq_get(vm, -2);
sq_pushobject(vm, instance);
if (sq_instanceof(vm) != SQTrue) return sq_throwerror(vm, _SC("class method is non-static"));
diff --git a/src/script/squirrel_std.cpp b/src/script/squirrel_std.cpp
index 0fb8564c8..ccd8affc1 100644
--- a/src/script/squirrel_std.cpp
+++ b/src/script/squirrel_std.cpp
@@ -73,7 +73,7 @@ SQInteger SquirrelStd::require(HSQUIRRELVM vm)
real_filename = ReallocT(real_filename, scstrlen(real_filename) + scstrlen(filename) + 1);
scstrcat(real_filename, filename);
/* Tars dislike opening files with '/' on Windows.. so convert it to '\\' ;) */
- char *filen = stredup(SQ2OTTD(real_filename));
+ char *filen = stredup(real_filename);
#if (PATHSEPCHAR != '/')
for (char *n = filen; *n != '\0'; n++) if (*n == '/') *n = PATHSEPCHAR;
#endif
diff --git a/src/stdafx.h b/src/stdafx.h
index cbf2d69f6..0a04e66dd 100644
--- a/src/stdafx.h
+++ b/src/stdafx.h
@@ -301,14 +301,10 @@
const char *FS2OTTD(const TCHAR *name);
const TCHAR *OTTD2FS(const char *name, bool console_cp = false);
- #define SQ2OTTD(name) (name)
- #define OTTD2SQ(name) (name)
#else
#define fopen(file, mode) fopen(OTTD2FS(file), mode)
const char *FS2OTTD(const char *name);
const char *OTTD2FS(const char *name);
- #define SQ2OTTD(name) (name)
- #define OTTD2SQ(name) (name)
#endif /* WIN32 */
#endif /* STRGEN || SETTINGSGEN */