Building CB myself using MSys2 MinGW64 64 bit and I think squirrel needs patched I am not sure that this patch is correct.
1. It is poorly formatted ( should I use tabs or spaces should I indent the tests or not. )
2. I am testing if __USE_MINGW_ANSI_STDIO is defined; but, maybe I need to test if the value is 1 or not zero.
diff --git a/src/sdk/scripting/squirrel/sqdebug.cpp b/src/sdk/scripting/squirrel/sqdebug.cpp
index 7f96c4f..df3ef5f 100644
--- a/src/sdk/scripting/squirrel/sqdebug.cpp
+++ b/src/sdk/scripting/squirrel/sqdebug.cpp
@@ -76,7 +76,11 @@ SQString *SQVM::PrintObjVal(const SQObject &o)
case OT_INTEGER:
// C::B patch: Support for Windows 64 bit
#if defined(_WIN64)
- scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%I64d"), _integer(o));
+ #if defined(__USE_MINGW_ANSI_STDIO)
+ scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%lld"), _integer(o));
+ #else
+ scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%I64d"), _integer(o));
+ #endif
// C::B patch: Support for Linux 64 bit
#elif defined(_SQ64)
scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)), _SC("%ld"), _integer(o));
diff --git a/src/sdk/scripting/squirrel/sqfuncstate.cpp b/src/sdk/scripting/squirrel/sqfuncstate.cpp
index f98c757..28e55c7 100644
--- a/src/sdk/scripting/squirrel/sqfuncstate.cpp
+++ b/src/sdk/scripting/squirrel/sqfuncstate.cpp
@@ -82,7 +82,11 @@ void DumpLiteral(SQObjectPtr &o)
case OT_INTEGER:
// C::B patch: Support for Windows 64 bit
#if defined(_WIN64)
- scprintf(_SC("{%I64d}"),_integer(o));
+ #if defined(__USE_MINGW_ANSI_STDIO)
+ scprintf(_SC("{%lld}"),_integer(o));
+ #else
+ scprintf(_SC("{%I64d}"),_integer(o));
+ #endif
// C::B patch: Support for Linux 64 bit
#elif defined(_SQ64)
scprintf(_SC("{%ld}"),_integer(o));
diff --git a/src/sdk/scripting/squirrel/sqvm.cpp b/src/sdk/scripting/squirrel/sqvm.cpp
index b1e91b5..d12f959 100644
--- a/src/sdk/scripting/squirrel/sqvm.cpp
+++ b/src/sdk/scripting/squirrel/sqvm.cpp
@@ -251,7 +251,11 @@ void SQVM::ToString(const SQObjectPtr &o,SQObjectPtr &res)
case OT_INTEGER:
// C::B patch: Support for Windows 64 bit
#if defined(_WIN64)
- scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%I64d"),_integer(o));
+ #if defined(__USE_MINGW_ANSI_STDIO)
+ scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%lld"),_integer(o));
+ #else
+ scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%I64d"),_integer(o));
+ #endif
// C::B patch: Support for Linux 64 bit
#elif defined(_SQ64)
scsprintf(_sp(rsl(NUMBER_MAX_CHAR+1)),_SC("%ld"),_integer(o));
Tim S.