I have create a bad code(Like usually


And obtain an error with v5.62 X86 (But i have tested with v5.70B4 X86 and it's the same thing)
Really sure that it's my fault


viewtopic.php?p=530237#p530237
So i have create a short example for try to show to you the problem
And effectively, a new time, this code works in X64 and not X86, is it normal ?
Perhaps a bad use of the prototype

Code: Select all
Prototype AllMessages(Param1$ = "", Param2$ = "", Param3$ = "")
Runtime Procedure MessageOneParameter(Text.s)
MessageRequester("Only one Parameter", Text)
EndProcedure
Procedure CallProcedure(NomProcedure.s, Parameter$)
*PtrProc = GetRuntimeInteger(NomProcedure + "()")
Call.AllMessages = *PtrProc
Call(Parameter$)
EndProcedure
CallProcedure("MessageOneParameter", "Hello it's KCC")
CallProcedure("MessageOneParameter", "Hello it's KCC")
Code: Select all
Prototype AllMessages(Param1$ = "", Param2$ = "", Param3$ = "")
Code: Select all
Prototype AllMessages(Param1$ = "")

Code: Select all
Prototype AllMessages(Param1$ = "", Param2$ = "", Param3$ = "")
Runtime Procedure MessageWithoutParameter()
MessageRequester("Without Parameter", "No parameter")
EndProcedure
Runtime Procedure MessageOneParameter(Text.s)
MessageRequester("Only one Parameter", Text)
EndProcedure
Runtime Procedure MessageTwoParameters(Text1.s, Text2.s)
MessageRequester("Two parameters", Text1 + Text2)
EndProcedure
Runtime Procedure MessageThreeParameters(Text1.s, Text2.s, Text3.s)
MessageRequester("Three parameters", Text1 + Text2 + Text3)
EndProcedure
Procedure CallProcedure(NomProcedure.s, Parameter$ = "")
*PtrProc = GetRuntimeInteger(NomProcedure + "()")
Call.AllMessages = *PtrProc
MaxParam = 0
If Parameter$ <> ""
MaxParam = CountString(Parameter$, ",") + 1
Protected Dim ArrayParams.s(MaxParam)
For i = 1 To MaxParam
ArrayParams(i) = StringField(Parameter$, i, ",")
Next
EndIf
Debug "Pre Call Size = " + ArraySize(ArrayParams())
Select MaxParam
Case 0
Call()
Case 1
Call(ArrayParams(1))
FreeArray(ArrayParams())
Case 2
Call(ArrayParams(1), ArrayParams(2))
FreeArray(ArrayParams())
Case 3
Call(ArrayParams(1), ArrayParams(2), ArrayParams(3))
FreeArray(ArrayParams())
EndSelect
Debug "Post Call Size = " + ArraySize(ArrayParams())
Debug "------------------"
EndProcedure
CallProcedure("MessageWithoutParameter")
CallProcedure("MessageOneParameter", "Hello it's KCC")
CallProcedure("MessageTwoParameters", "Hello it's KCC a second time, but it's more long")
CallProcedure("MessageThreeParameters", "Hello it's KCC another time, and this time, it's one time too much")