summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp15
1 files changed, 14 insertions, 1 deletions
diff --git a/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp b/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp
index e1f93cbf7..78b8a9c60 100644
--- a/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp
+++ b/src/3rdparty/squirrel/sqstdlib/sqstdaux.cpp
@@ -2,6 +2,7 @@
#include <squirrel.h>
#include <sqstdaux.h>
#include <assert.h>
+#include <string.h>
void sqstd_printcallstack(HSQUIRRELVM v)
{
@@ -21,7 +22,19 @@ void sqstd_printcallstack(HSQUIRRELVM v)
const SQChar *fn=_SC("unknown");
const SQChar *src=_SC("unknown");
if(si.funcname)fn=si.funcname;
- if(si.source)src=si.source;
+ if(si.source) {
+ /* We don't want to bother users with absolute paths to all AI files.
+ * Since the path only reaches NoAI code in a formatted string we have
+ * to strip it here. Let's hope nobody installs openttd in a subdirectory
+ * of a directory named /ai/. */
+ src = scstrstr(si.source, _SC("\\ai\\"));
+ if (!src) src = scstrstr(si.source, _SC("/ai/"));
+ if (src) {
+ src += 4;
+ } else {
+ src = si.source;
+ }
+ }
pf(v,_SC("*FUNCTION [%s()] %s line [%d]\n"),fn,src,si.line);
level++;
}