Kbase 21129: 'C' Call Stack Has Been Compromised After Calling In (6069)
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  30/01/2007 |
|
Status: Unverified
SYMPTOM(s):
'C' Call Stack has been compromised after calling in (6069)
Calling a Windows Dynamic Link Library (DLL) routine.
CAUSE:
This error most likely occurs because Progress is using either the standard Windows calling convention (STDCALL -- default in Progress 9.x) or the Pascal calling convention (PASCAL -- default in Progress 8.x and earlier versions) to access a routine written in the C programming language. Either can cause the 'C' Call Stack not to be cleaned up by the called function.
FIX:
To resolve the error, specify the CDECL option in the procedure definition so that Progress uses the C calling convention to access the routine. Example:
PROCEDURE DWT_Init EXTERNAL "DWT32.DLL":U CDECL:
DEFINE INPUT PARAMETER APPPATH AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER MASKSPATH AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER BLDGAPPNAME AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER PERSAPPNAME AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER SEEDAPPNAME AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER TMPPATH AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER ADLMSGFILEPATH AS CHARACTER NO-UNDO.
DEFINE INPUT PARAMETER OFFSETSFILENAME AS CHARACTER NO-UNDO.
DEFINE RETURN PARAMETER ERRSTATUS AS LONG NO-UNDO.
END.