ID: Q147760
4.00 | 4.00
WINDOWS | WINDOWS NT
kbprg kbbuglist
The information in this article applies to:
An application that is compiled with the -4Ya -Ox -4fps1 compiler switches together causes stack data corruption at run time.
Multiple variables are being assigned to the same stack location.
Don't use these compiler switches together.
Microsoft has confirmed this to be a bug in the Microsoft products listed at the beginning of this article. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.
The following code illustrates the problem:
C Compile options needed: -4Ya -Ox -4fps1
INTEGER NUMBER, DIVSOR, QUOT, REM
NUMBER = 5
DIVSOR = 2
CALL DIVIDE (NUMBER, DIVSOR, QUOT, REM)
PRINT *, 'Quotient : ', QUOT
PRINT *, 'Remainder: ', REM
END
SUBROUTINE DIVIDE (NUMBER,DIVSOR,QUOT,REM)
INTEGER NUMBER, DIVSOR, QUOT, REM, Q
Q = NUMBER/DIVSOR
REM = NUMBER-DIVSOR*Q
QUOT = Q
END
The following program output is produced at run time:
Quotient : 1
Remainder: 0
The correct output should be:
Quotient : 2
Remainder: 1
Additional reference words: 4.00
KBCategory: kbprg kbbuglist
KBSubcategory: FORTLngIss
Keywords : kbFortranPS kbLangFortran kbbuglist
Version : 4.00 | 4.00
Platform : NT WINDOWS
Last Reviewed: March 3, 1996