Code::Blocks Forums

Developer forums (C::B DEVELOPMENT STRICTLY!) => Development => Topic started by: BlueHazzard on December 03, 2019, 08:03:14 pm

Title: Codeblocks wx31_64 scripting error
Post by: BlueHazzard on December 03, 2019, 08:03:14 pm
If i try to create a codeblocks plugin with my codeblocks wx31_64 on windows i get multiple asserts because of wrong format specifier...

this patch should fix it. Can someone test this on linux?

Code
Index: src/sdk/scripting/bindings/sc_wxtypes.cpp
===================================================================
--- src/sdk/scripting/bindings/sc_wxtypes.cpp (revision 11914)
+++ src/sdk/scripting/bindings/sc_wxtypes.cpp (working copy)
@@ -136,7 +136,7 @@
         if (sa.GetType(2) == OT_INTEGER)
         {
 #ifdef _SQ64
-            result.Printf(_T("%s%ld"), str1.c_str(), sa.GetInt(2));
+            result.Printf(_T("%s%I64d"), str1.c_str(), sa.GetInt(2));
 #else
             result.Printf(_T("%s%d"), str1.c_str(), sa.GetInt(2));
 #endif
Title: Re: Codeblocks wx31_64 scripting error
Post by: oBFusCATed on December 03, 2019, 08:13:05 pm
If you want to print a 64bit int on more than one platform, the best way I've found is to cast it to long long and then use %lld.
Title: Re: Codeblocks wx31_64 scripting error
Post by: MortenMacFly on January 03, 2020, 06:22:23 pm
If you want to print a 64bit int on more than one platform, the best way I've found is to cast it to long long and then use %lld.
I second that. I think %I64d is not reliable enough.