FIX: Bad Result If Call Inline Function Twice in Expression (135526)
The information in this article applies to:
- Microsoft Visual C++ 1.0
- Microsoft Visual C++ 1.5
- Microsoft Visual C++ 1.51
- Microsoft Visual C++ 1.52
- Microsoft Visual C++ 2.0
- Microsoft Visual C++ 2.1
- Microsoft Visual C++ 2.2
- Microsoft Visual C++ 4.0
- Microsoft Visual C++ 4.1
- Microsoft Visual C++, 32-bit Enterprise Edition 4.2
- Microsoft Visual C++, 32-bit Enterprise Edition 5.0
- Microsoft Visual C++, 32-bit Enterprise Edition 6.0
- Microsoft Visual C++, 32-bit Professional Edition 4.2
- Microsoft Visual C++, 32-bit Professional Edition 5.0
- Microsoft Visual C++, 32-bit Professional Edition 6.0
- Microsoft Visual C++, 32-bit Learning Edition 6.0
This article was previously published under Q135526 SYMPTOMS
Invalid results may be generated under these conditions:
- Your code defines an inline function that uses global or static data,
and it invokes that function twice within an expression.
- You are using the /Ob1 or /Ob2 or /Ox compiler optimization switch with
the 32-bit compiler, or you are using the /Ob1g or /Ob2g or /Ox switch
with the 16-bit compiler.
- The global or static variable appears in the return expression for the
function.
RESOLUTION
Do not use the above optimizations.
-or-
Assign the return value of one of the function calls to a local
variable. Then use the local variable in the expression.
STATUS
Microsoft has confirmed this to be a bug in the Microsoft products listed
at the beginning of this article.
This problem was corrected in Microsoft Visual C++ .NET.
Modification Type: | Major | Last Reviewed: | 12/8/2003 |
---|
Keywords: | kbBug kbCodeGen kbCompiler kbCPPonly kbfix kbNoUpdate KB135526 |
---|
|