ProcedureReturn segfault
Posted: Mon Jul 04, 2005 3:56 pm
On the forum I found a nice piece of code (written for the Windows version) to make it a bit easier to use libmysqlclient.so.12. This is a relevant part to show my problem:
The code produces a segfault. When I comment the ProcedureReturn and add a line "dbHnd.l = CallFunctionFast (CFF_MySQL_Init, dbHnd)" it works. I guess the code is correct, but fails when it's put within a Procedure. In the Windows version this seems to be legal. Any ideas?
Code: Select all
#libmysql = 1
Global CFF_MySQL_Init.l, CFF_MySQL_ERRNO.l
Global CFF_MySQL_ERROR.l, CFF_MySQL_Real_Connect.l
Global CFF_MySQL_Real_Query.l, CFF_MySQL_Store_Result.l
Global CFF_MySQL_Field_Count.l, CFF_MySQL_Use_Result.l
Global CFF_MySQL_Fetch_Row.l, CFF_MySQL_Fetch_Lengths.l
Global CFF_MySQL_Free_Result.l, CFF_MySQL_Close.l
Procedure.l MySQL_Init()
If OpenLibrary(#libmysql,"libmysqlclient.so.12")
CFF_MySQL_Init = IsFunction(#libmysql, "mysql_init")
CFF_MySQL_ErrNo = IsFunction(#libmysql, "mysql_errno")
CFF_MYSQL_Error = IsFunction(#libmysql, "mysql_error")
CFF_MySQL_Real_Connect = IsFunction(#libmysql, "mysql_real_connect")
CFF_MySQL_Real_Query = IsFunction(#libmysql, "mysql_real_query")
CFF_MySQL_Store_Result = IsFunction(#libmysql, "mysql_store_result")
CFF_MySQL_Field_Count = IsFunction(#libmysql, "mysql_field_count")
CFF_MySQL_Use_Result = IsFunction(#libmysql, "mysql_use_result")
CFF_MySQL_Fetch_Row = IsFunction(#libmysql, "mysql_fetch_row")
CFF_MySQL_Fetch_Lengths = IsFunction(#libmysql, "mysql_fetch_lengths")
CFF_MySQL_Free_Result = IsFunction(#libmysql, "mysql_free_result")
CFF_MySQL_Close = IsFunction(#libmysql, "mysql_close")
ProcedureReturn CallFunctionFast (CFF_MySQL_Init, dbHnd)
EndIf
EndProcedure
dbHnd = MySQL_Init()