ID: Q102162
7.00 | 1.00 MS-DOS | WINDOWS kbtool kbfixlist kbbuglist
The information in this article applies to:
- Microsoft C/C++ for MS-DOS, version 7.0
- Microsoft Visual C++ for Windows, version 1.0
An attempt to run an application fails. When the application runs in the Microsoft Windows operating system, a General Protection (GP) fault occurs. In the MS-DOS operating system, the application may hang or cause the system to crash.
The C++ optimizing compiler generates a bad jump target in the return of a function when the function includes an _asm block that contains floating-point instructions.
There are two methods to work around this problem:
Microsoft has confirmed this to be a bug in the products listed above. This problem was corrected in Visual C++ for Windows, version 1.5.
This problem does not occur in Visual C++, 32-bit Edition, version 1.0.
The following code example demonstrates this problem:
/*
* Compiler options needed: /f- /AL to demonstrate problem
* Optional additional options: /Od /Zi
*/
void tdt(double x)
{
_asm
{
fld x
f2xm1
; fptan also causes a bad jmp calculation
fwait
} // Bad JMP instruction
}
void main()
{
double x1 = 0.4;
tdt(x1);
}
Additional reference words: 1.00 7.00 8.00 KBCategory: kbtool kbfixlist kbbuglist KBSubcategory: CLIss
Keywords : kb16bitonly kbCompiler kbbuglist kbfixlist
Version : 7.00 | 1.00
Platform : MS-DOS WINDOWS
Solution Type : kbfix
Last Reviewed: September 20, 1997