Post bugreports for the Windows version here
mk-soft
Always Here
Posts: 6595 Joined: Fri May 12, 2006 6:51 pm
Location: Germany
Post
by mk-soft » Fri Feb 27, 2026 5:25 pm
Works with PB v6.40 Alpha 4 and Beta 1 ASM-Backend. Same on macOS
Module ThreadToGUI
Link En:
http://www.purebasic.fr/english/viewtop ... 12&t=66180
C-Backend
---------------------------
PureBasic - Assembler error
---------------------------
error: implicit declaration of function 'SYS_FreeStructureStrings'; did you mean 'SYS_FreeParameterString'? [-Werror=implicit-function-declaration]
3800 | SYS_FreeStructureStrings(&((threadtoguiXs_udtselectedfont*)(tls+24))[0],mthreadtoguiXs_udtselectedfo
---------------------------
OK
---------------------------
*** DisplayCcode ***
- Compiler File Path: C:\WinAPP\PureBasic-v640x64\Compilers\pbcompilerc.exe
- Compiler Parameters: --commented -co PB_Editor_BuildCount=0 -co PB_Editor_CompileCount=0 --thread --unicode --output "C:\Users\Michael\AppData\Local\Temp\purebasic"
- C-Code File Path:C:\WinAPP\PureBasic-v640x64\Compilers\purebasic.c
*** Compiler ***
Error: Assembler
error: implicit declaration of function 'SYS_FreeStructureStrings'; did you mean 'SYS_FreeParameterString'? [-Werror=implicit-function-declaration]
963 | SYS_FreeStructureStrings(&((threadtoguiXs_udtselectedfont*)(tls+24))[0],mthreadtoguiXs_udtselectedfo
*** C-Code ***
//
// PureBasic 6.40 beta 1 - C Backend (Windows - x64) generated code
//
// (c) 2026 Fantaisie Software
//
C-Code
M_SYSFUNCTION(void) SYS_FreeThreadObjectCallback(char *tls) {
PB_FreeList(((pb_list *)(tls+0))[0].a);
SYS_FreeStructureStrings(&((threadtoguiXs_udtselectedfont*)(tls+24))[0],mthreadtoguiXs_udtselectedfont);
}
Fred
Administrator
Posts: 18529 Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:
Post
by Fred » Fri Feb 27, 2026 6:07 pm
Fixed.
mk-soft
Always Here
Posts: 6595 Joined: Fri May 12, 2006 6:51 pm
Location: Germany
Post
by mk-soft » Fri Feb 27, 2026 6:10 pm
Could reduce the code. Due to threaded structures
Code: Select all
Structure udtFoo
iVal.i
sVal.s
EndStructure
Threaded varFoo.udtFoo
Code: Select all
//
// PureBasic 6.40 beta 1 - C Backend (MacOS X - x64) generated code
//
// (c) 2026 Fantaisie Software
//
// The header must remain intact for Re-Assembly
//
// :System
//
#pragma warning(disable: 4024)
//
typedef long long quad;
typedef quad integer;
#define PB_INFINITY (1.0 / 0.0)
#define PB_NEG_INFINITY (-1.0 / 0.0)
typedef struct pb_array { void *a; } pb_array;
typedef struct pb_array2 { void *a; integer b[2]; } pb_array2;
typedef struct pb_array3 { void *a; integer b[3]; } pb_array3;
typedef struct pb_array4 { void *a; integer b[4]; } pb_array4;
typedef struct pb_array5 { void *a; integer b[5]; } pb_array5;
typedef struct pb_array6 { void *a; integer b[6]; } pb_array6;
typedef struct pb_array7 { void *a; integer b[7]; } pb_array7;
typedef struct pb_array8 { void *a; integer b[8]; } pb_array8;
typedef struct pb_array9 { void *a; integer b[9]; } pb_array9;
typedef struct pb_listitem { void *a; void *b; void *c;} pb_listitem;
typedef struct pb_list { void *a; pb_listitem *b; } pb_list;
typedef struct pb_mapitem { void *a; void *b; void *c;} pb_mapitem;
typedef struct pb_pbmap { pb_mapitem *a; } pb_pbmap;
typedef struct pb_map { pb_pbmap *a; } pb_map;
static integer s_s[]={0, -1};
#define M_SYSFUNCTION(a) a
#define M_PBFUNCTION(a) a
#define M_CDECL
typedef void TCHAR;
#include <math.h>
#define SYS_BankerRound(x) llrint(x)
#define SYS_BankerRoundQuad(x) llrint(x)
//
static char *tls;
int PB_ExitCode=0;
integer PB_MemoryBase=0;
integer PB_Instance=0;
int PB_ArgC;
char **PB_ArgV;
static unsigned char *pb_datapointer;
//
//
//
//
void SYS_Quit();
M_SYSFUNCTION(void) SYS_InitPureBasic();
void exit(int status);
M_PBFUNCTION(void) PB_InitCocoa();
extern TCHAR *SYS_Empty;
M_SYSFUNCTION(void) SYS_NewString(TCHAR **Address, const TCHAR *String);
M_SYSFUNCTION(void) SYS_FreeString(TCHAR *String);
M_SYSFUNCTION(void *) SYS_InitThreadedObject();
M_SYSFUNCTION(void) SYS_InitString(void);
M_SYSFUNCTION(void) SYS_FreeStrings(void);
//
volatile int PB_DEBUGGER_LineNumber=-1;
volatile int PB_DEBUGGER_IncludedFiles=0;
char *PB_DEBUGGER_FileName=0;
typedef struct s_udtfoo s_udtfoo;
//
#pragma pack(1)
typedef struct s_udtfoo {
integer f_ival;
void* f_sval;
} s_udtfoo;
#pragma pack()
integer f_exit_(integer) asm("_exit");
static unsigned short _S1[]={0,0,0,0,0};
static integer ms_s[]={0,-1};
static integer ms_udtfoo[];
static integer ms_udtfoo[]={
8,
-1};
//
//
M_SYSFUNCTION(void) SYS_InitThreadObjectCallback(char *tls) {
}
M_SYSFUNCTION(void) SYS_FreeThreadObjectCallback(char *tls) {
SYS_FreeStructureStrings(&((s_udtfoo*)(tls+0))[0],ms_udtfoo);
}
//
char PB_OpenGLSubsystem=1;
int PB_Compiler_Thread=0;
int PB_Compiler_Purifier=0;
int PB_Compiler_Debugger=0;
int PB_Compiler_DPIAware=0;
int PB_Compiler_CBackend=1;
int PB_ExecutableType=0;
integer PB_ThreadedObjectSize=16;
//
void PB_EndFunctions() {
}
//
int main(int argc, char* argv[]) {
PB_ArgC = argc;
PB_ArgV = argv;
SYS_InitPureBasic();
SYS_InitString();
tls=SYS_InitThreadedObject();
// Structure udtFoo
// iVal.i
// sVal.s
// EndStructure
//
// Threaded varFoo.udtFoo
//
SYS_Quit();
}
void SYS_Quit() {
PB_EndFunctions();
exit(PB_ExitCode);
}
P.S.
Thanks