User forums > Help

Can`t build C::B IDE from latest svn revision 12240

<< < (7/8) > >>

stahta01:
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.


--- Code: ---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));

--- End code ---

Tim S.

oBFusCATed:
Patching it for what? What is the error you're trying to fix?
I'm pretty sure we're not supposed to use __USE_MINGW_ANSI_STDIO.

stahta01:

--- Quote from: oBFusCATed on January 12, 2021, 12:28:56 am ---Patching it for what? What is the error you're trying to fix?
I'm pretty sure we're not supposed to use __USE_MINGW_ANSI_STDIO.

--- End quote ---

Building using the MSys2 MinGW64 64 bit GCC; it does not support "I64d" printf option.
Edit: And the compiler defines "__USE_MINGW_ANSI_STDIO" to 1 to show this fact.
Edit2: The define is in C:\msys64\mingw64\include\c++\10.2.0\x86_64-w64-mingw32\bits\os_defines.h
I have yet to find if it is defined for C only code.

Tim S.

omlk:
https://en.cppreference.com/w/c/types/integer
https://en.cppreference.com/w/cpp/types/integer

oBFusCATed:
@stahta01: I guess omlk wanted to point you to PRxNN macros, but he/she was so vague that I'm not sure he/she succeeded :)

Navigation

[0] Message Index

[#] Next page

[*] Previous page

Go to full version