Microsoft KB Archive/166719

= FIX: Wrong Exception Rethrown with Global Optimization =

Article ID: 166719

Article Last Modified on 7/5/2005

-

APPLIES TO


 * Microsoft Visual C++ 5.0 Enterprise Edition
 * Microsoft Visual C++ 5.0 Professional Edition

-



This article was previously published under Q166719



SYMPTOMS
The wrong exception is rethrown when global optimization (/Og) is enabled. For example, in the following sample, the correct output is:

  A 1st throw B 2nd throw C 1st throw However, if global optimization (/Og) is enabled, the output is:

  A 1st throw B 2nd throw C 2nd throw



RESOLUTION
To work around the problem, disable the global optimization on the command line or use the optimize pragma to disable the optimization for the function where the problem occurs. For example: #pragma optimize("g", off)



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was corrected in Microsoft Visual C++ version 6.0.



Sample Code
//test.cpp /* Compiler options needed : /GX */ #include using namespace std; #pragma optimize("g", on) void main { try {           char* pStr = NULL; try {               throw "1st throw\n"; }           catch( char* str ) {               cout << "A " << str; try {                   throw "2nd throw\n"; }               catch( char* str ) {                   cout <<"B "<< str; }               throw; }       }        catch ( char* str ) {           cout <<"C "<< str; }   }

Keywords: kbbug kbfix kbvc600fix kbcode KB166719

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.