IBM C Set++ compiler.
Self-installer package and ZIP:
See below for download link(s).
Following ones are the download links for manual installation:
CTC0012 v. 2.x (Compiler CSD for C Set ++, 20/12/1995, International Business Machines Corporation (IBM)) | Readme/What's new |
Correct Service (CSDs) for C Set ++ for OS/2, Versions 2.0 and 2.1.
The CSDs are broken down into a number of different subcomponents to
help simplify the CSD distribution. Within each subcomponent, the CSDs
are cumulative, so you only need to apply the latest one for each
subcomponent.
The CSDs (except for WorkFrame/2) use the following name convention:
- The first two characters are alway CT.
- The next character indicates the subcomponent:
C - Compiler
O - Open Class Libraries
U - Utilities (e.g. debugger, browser, etc)
- The last four characters is the level of the CSD.
So, CTC0011 is the eleventh compiler CSD for C Set ++ Version 2.x.
The CTCxxxx and CTUxxxx CSDs are the same for both versions 2.0 and 2.1.
The CTLxxxx CSDs are class library fixes for version 2.0 only.
The CTMxxxx CSDs are class library fixes for version 2.1 only.
WorkFrame/2 Version 2.1 was only included with C Set ++ version 2.1.
WorkFrame/2 Version 1.1 was included with both C Set ++ version 2.0 and 2.1.
However, there are no CSDs for WorkFrame/2 V1.1.
Each CSD is in a separate subdirectory. See the readme.txt file in each
subdirectory for details on what you need to do to apply the CSD.
If you have any questions, please contact cset2@vnet.ibm.com.
CTC0012 is a CSD (set of fixes) for the Compiler Subcomponent of
C Set ++ for OS/2, Versions 2.0 and 2.1.
All the Compiler CSDs are cumulative, so you only need to apply the
latest one (i.e. the one with the highest number after the CTC prefix).
The CSD must be applied using the provided installation tools.
CSD CTC0012 is an Informal Corrective Service.
Files in this directory:
------------------------
csdfixes.lst - a text file that lists the fixes that are included in this CSD.
You may want to get this file to see what fixes are included
before getting the actual CSD. This file is included in the
ZIP file, so you do not need to get it if you are getting the
ZIP file.
ctc0012.zip - contains the CSD.
readme.txt - this file
Instructions:
-------------
Get the ZIP file in binary mode.
Unpack the ZIP file into a clean directory.
Install using the provided SERVICE.EXE program.
Contact:
--------
If you have any questions about these files, please contact
cset2@vnet.ibm.com.
C Set ++ Compiler Version 2.0
Fixes List
-----------------------------
*******************************************************************************
* *
* This CSD contains fixes that are common to C/C++ Tools Version 2.0 and *
* Version 2.01. Notwithstanding the version statements contained in the *
* files of this CSD, this is not an upgrade of Version 2.0 to Version 2.01. *
* *
* The code to which you have access is determined by the version of the *
* software to which you are licensed. *
* *
*******************************************************************************
===============================================================================
CTC0012 is informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------------
PJ19826 BE Fixes a problem where the code optimizer was generating
incorrect code in a tail-call optimization, which then
leads to stack memory corruption at runtime.
-------------------------------------------------------------------------------
PJ19827 BE Fixes a problem where incorrect code was generated when
passing a structure by value to a function when the size
of the structure was 45 to 47 bytes.
-------------------------------------------------------------------------------
PJ19853 BE Fixes a problem where the code optimizer may generate
incorrect optimized code for a for-loop when the loop
boundary values are array or structure elements. This
causes the loop body to be executed only once regardless
of the actual number of iterations defined.
-------------------------------------------------------------------------------
PJ19854 BE Fixes a problem where the code generator is not doing
correct integral promotion in some expressions, in which
there are char or short variables.
-------------------------------------------------------------------------------
PJ19855 BE Fixes a problem where the code optimizer may trap when
pushing floating-point parameters for function calls.
-------------------------------------------------------------------------------
PJ19856 BE Fixes a problem where the code generator may create code
that corrupts the stack in a stmt like "t = foo().x", when
the member of a structure returned by a function is stored
to a variable on stack.
-------------------------------------------------------------------------------
PJ19857 BE Fixes a problem where the code generator may incorrectly
generate an FSUBR instruction using a 10-byte memory
operand (which is an illegal instruction)
-------------------------------------------------------------------------------
PJ19858 BE Fixes a problem where the code optimizer may incorrectly
generate code to inline code of the form:
strcat(memcpy(..))
-------------------------------------------------------------------------------
PJ19859 BE Fixes a problem where the code optimizer traps when
handling a negative multiplier.
-------------------------------------------------------------------------------
PJ19860 BE Fixes a problem where the code optimizer incorrectly
performed strength reduction if an induction variable was
a member of a structure.
-------------------------------------------------------------------------------
PJ19869 BE Fixes a problem where simple functions containing code
like the following:
if (x) return y;
else return z;
may leave floating-point parameters on the NPX stack after
function exit.
-------------------------------------------------------------------------------
PJ19874 BE Fixes a problem where a floating-point value could be left
on the NPX register stack if a floating-point value
returned by a function is assigned but not used.
-------------------------------------------------------------------------------
PJ19875 BE Fixes a problem in code generation when using _outp() with
the value parameter being an expression.
-------------------------------------------------------------------------------
PJ19877 BE Fixes a problem in code generation with /O+ /G5 switches
in code containing calls to memchr() where the count is
non-constant and evaluates to zero.
-------------------------------------------------------------------------------
QI 36859 BE Fixes a problem where the optimizer could generate bad
code for accessing local variables.
-------------------------------------------------------------------------------
QI 36866 BE Fixes a problem where the optimizer generates incorrect
code in returning a structure which causes memory
corruption.
-------------------------------------------------------------------------------
QI 36868 BE Fixes a problem where the could cause source of the form
((USHORT)((ULONG) x)) to generate bad code.
-------------------------------------------------------------------------------
QI 36891 BE Fixes a problem where a MOD operation could cause the
code generator to go into an infinite loop.
-------------------------------------------------------------------------------
PJ19868 ICL Fixes a problem where the intermediate code linker
cannot handle compiling of more than 256 files. It would
either trap or generate a "cannot open immediate file"
error message.
-------------------------------------------------------------------------------
PJ19876 ICL Fixes a problem with /Ti that can cause ICL to issue a
fatal error when compiling C++ files with pointers to
member functions
-------------------------------------------------------------------------------
QI 47562 ICL Fixes a problem with /Ti that can cause BE to generate
'error in intermediate file RBDEBUG(..)' message.
-------------------------------------------------------------------------------
PJ19834 CFE Fixes a problem where an unexpected compiler error occurs
in some programs containing duplicate declarations of
structures
-------------------------------------------------------------------------------
PJ19835 CFE Fixes a problem where the preprocessor does not always
expand some macros in #if directive correctly.
-------------------------------------------------------------------------------
PJ19847 CFE Fixes a problem where the preprocessor is not always
paste tokens together properly.
-------------------------------------------------------------------------------
PJ19850 CFE Fixes a problem where the compiler is not propagating the
volatile property of a structure to the structure's
members
-------------------------------------------------------------------------------
PJ19904 C++FE Fixes a problem with the C++ compiler, where it was
generating an invalid error EDC3263 message for a template
class with a non-inline member function
operator const T * () const;
-------------------------------------------------------------------------------
PJ19905 C++FE Fixes a problem with the C++ compiler, where data and
function members inherited through virtual bases may be
accessed incorrectly. When accessing a virtual base
class, or a base of a virtual base, certain inheritance
hierarchies would cause the wrong base class to be
accessed, and therefore the wrong data member to be
accessed or the wrong virtual function table to be used.
-------------------------------------------------------------------------------
PJ19906 C++FE Fixes a problem where the C++ compiler trapped on invalid
source. (specifying "_Seg16" before "*" of a pointer
variable)
-------------------------------------------------------------------------------
PJ19907 C++FE Fixes a problem where the C++ compiler generated code that
could cause object destructors to be called twice during
exception processing
-------------------------------------------------------------------------------
QI 28455 C++FE Fixes a problem where the C++ compiler generated an
inconsistent function name when the function name is
declared inside a structure of an anonymous union. When
mangling a name, It now doesnot generate the part for the
anonymous union.
-------------------------------------------------------------------------------
PJ19820 CRT Fixes a problem with _access().
The _access() library function may fail if there are no
available file handles. This has been changed so that if
the process run out of file handles, _access() will
increment the maximum number of handles available to the
process.
-------------------------------------------------------------------------------
PJ19829 CRT Fixes a problem with printf().
printf() failed with precision 0 and argument 0 in
integral conversions, producing no output. This has been
changed to fill the space specified by width with blanks.
-------------------------------------------------------------------------------
PJ19831 CRT Fixes a problem handling exceptions inside the library
termination code. Exception handling requires thread
local storage which may have been freed if an exception
happens inside termination code. Exceptions inside
library terminatin code are no longer handled, by the
library, but are passed to the OS for handling.
-------------------------------------------------------------------------------
PJ19833 CRT Fixes a problem reloading a locale. If setlocale() was
called twice for the same locale, the second call will
free the storage used to store locale specific
information, but will not allocate new storage, and
dangling reference will occur. The fix allows a new
locale to use already allocated storage.
-------------------------------------------------------------------------------
PJ19851 CRT Fixes a problem with _strcoll().
The strcoll() library function may fail if its first
argument is substring of the second argument. The
function has been fixed to behave symetrically regarding
its arguments.
-------------------------------------------------------------------------------
PJ19852 CRT Fixes a problem with _heapmin().
If there are large objects allocated from the heap, the
_heapmin() function may cause memory leaks.
-------------------------------------------------------------------------------
QI 49096 CRT Fixes a process termination exception.
An exception could happen at process termination if any of
the standard streams are closed. A subsequent malloc()
could reuse the memory used by standard streams, but the
run-time still thinks it owns the memory.
===============================================================================
CTC0011 is informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------------
QUAL-IMP BE Compiling a module without a main() function using the /O
/Ol /Gu options could result a compile-time trap.
-------------------------------------------------------------------------------
QUAL-IMP BE When the multiplication of char or short constants results
in an overflow, incorrect code may be generated if the
result of the multiply is used in a comparison.
-------------------------------------------------------------------------------
QUAL-IMP BE An internal problem could result in a compile-time
exception when compiling a switch with /O+ /Ti+.
-------------------------------------------------------------------------------
QUAL-IMP BE In rare cases, stack space allocated by _alloca() could
become corrupted when using auto-inlining.
-------------------------------------------------------------------------------
QUAL-IMP BE Fixed an internal problem which in rare circumstances
could cause incorrect code generation
-------------------------------------------------------------------------------
PJ15990 BE ICL: When compiling with /Fw to generate intermediate
files, a bug in the ICL could result in the incorrect
intermediate files which causes the compiler backend
to trap.
-------------------------------------------------------------------------------
PJ16021 BE Defining an uninitialized variable of type double in more
than one module results in a LINK386 L2025 error (symbol
defined more that once).
-------------------------------------------------------------------------------
PJ15991 BE ICL: A bug in the ICL could cause a compile-time trap
in the compiler back end when the /Ol+ option is used.
-------------------------------------------------------------------------------
PJ15987 BE An internal problem occurring during register assignment
could cause a compile-time exception.
-------------------------------------------------------------------------------
PJ16024 BE Fixes a problem where the epilog of a function could
be incorrect if the function contains a call to _alloca.
-------------------------------------------------------------------------------
PJ15881 BE Statements of the form "x ? INT_MAX : INT_MIN;" could be
optimized incorrectly.
-------------------------------------------------------------------------------
PJ15876 BE The last compare and jump in strncat() should be unsigned
rather that signed.
-------------------------------------------------------------------------------
PJ15882 BE Fixed a problem where compiling with /Gr and then running
at ring 0 causes a Stack Segment Overrun trap.
-------------------------------------------------------------------------------
PJ15880 BE Incorrect code may be generated when a conditional
expression is logically negated and used as the test
expression within an if statement.
-------------------------------------------------------------------------------
PJ15894 BE The conversion from a segmented pointer to a flat pointer
may not occur if the _Seg16 pointer is cast to an int.
-------------------------------------------------------------------------------
PJ15935 BE Fixes a register assigning problem which could cause
a run-time trap when calling a function via a pointer.
-------------------------------------------------------------------------------
PJ16023 BE Fixes a problem where compiling with /Ti+ causes the
compiler to create a huge temporary file.
-------------------------------------------------------------------------------
PJ15986 BE A problem occurring while trying to optimize the usage
of registers could result in incorrect code generation.
-------------------------------------------------------------------------------
PJ15883 BE In rare cases, the generated code for the builtin version
of strcmp could be incorrect when one of it's parameters
is a function.
-------------------------------------------------------------------------------
PJ15993 BE Consecutive / and % operators with identical operands
inside simple loops could be compiled incorrectly.
-------------------------------------------------------------------------------
PJ15869 BE Compiling an "if" that contains a negated ternary
expression could cause a compile-time trap.
-------------------------------------------------------------------------------
QUAL-IMP BE Using #pragma alloc_text() to place a function in the
default code segment (CODE32) may result in a run-time
exception since two CODE32 segments may be created.
-------------------------------------------------------------------------------
PJ15872 BE Fixed an internal problem that could cause a compile-time
trap when compiling an simple "if" containing the logical
negation of a floating-point variable.
-------------------------------------------------------------------------------
QUAL-IMP BE Incorrect debug information generated which could cause
IPMD to fail.
-------------------------------------------------------------------------------
QUAL-IMP BE When using the /Gt option, static arrays of the same
type could be mapped on top of each other in rare cases.
-------------------------------------------------------------------------------
PJ16038 BE Fixes a register assigner bug that could cause incorrect
register spills/reloads of 8 or 16 bit values.
-------------------------------------------------------------------------------
PJ15870 BE In rare cases, the code generated for the builtin version
of memchr could be incorrect when using the /G5 option.
-------------------------------------------------------------------------------
PJ15994 BE Instruction scheduling could cause code containing
consecutive memsets to fail.
-------------------------------------------------------------------------------
PJ15996 BE An internal problem occurring during loop unrolling
could result in a compile-time exception.
-------------------------------------------------------------------------------
PJ15933 BE An illegal MOV instruction could be generated when
converting a 32-bit value to an 8-bit value.
-------------------------------------------------------------------------------
PJ15934 BE An internal problem occurring while handling floating-point
parameters in registers could cause a compile-time trap.
-------------------------------------------------------------------------------
PJ16313 BE Incorrect code may be generated when converting an integer
value to a floating-point value if the integer variable is
used after the conversion.
-------------------------------------------------------------------------------
PJ16037 C++FE In some rare cases, compiler might corrupt identifier
CFE names that are also macro names not eligible for macro
expansion.
e.g., #define max(a,b) (((a) > (b)) ? (a) : (b))
int max;
| -> max here could be corrupted
-------------------------------------------------------------------------------
QUAL-IMP CFE Compiler is not generating correct code for the side
effect in the following 'if' statement:
if (*++p == '-0' && !1) ;
'p' does not get incremented as expected.
-------------------------------------------------------------------------------
QUAL-IMP CFE Compiler is not correctly recognizing that statements in a
'switch' before any 'case' or 'default' are unreachable.
-------------------------------------------------------------------------------
PJ15888 CFE Declaration of function returning pointer to array of
unsigned int without 'int' specifier is misinterpreted.
i.e., (*foo())-┘ {}
causes the compiler to generate erroneous error message.
It should be accepted in the same way as:
int (*foo())-┘ {}
-------------------------------------------------------------------------------
PJ15887 CFE Compiler incorrectly issues error message for the
following correct code segment:
char * const kpz;
kpz[0] = '-0';
-------------------------------------------------------------------------------
QUAL-IMP CFE Compiler hangs when compiling source code with comment on
the last line and the comment exceeds the right margin.
-------------------------------------------------------------------------------
PJ16029 CFE Calling from 16 bit to 32 bit, and passing a pointer does
not result in the pointer being automatically thunked.
-------------------------------------------------------------------------------
PJ16028 CFE When ICC is invoked to compile a large number of files in
a command line or a response file, ICC fails with message
"Severe Error: Unable to retrieve messages from message
file."
-------------------------------------------------------------------------------
PJ16027 CRT If the result from internal function called by strtod()
would cause underflow exception, it is rounded to zero,
with proper error signaling.
-------------------------------------------------------------------------------
PJ15886 CRT strdup() allocates memory with malloc(), so it cannot be
freed in a program that was compiled with /Gt+. Changes
to the heap algorithm now permit any type of memory
(normal, tiled, or debug) to be passed to any kind of
free() or realloc() function. In the case of realloc(),
the resulting memory will be of the same type as the
original.
-------------------------------------------------------------------------------
PJ15885 CRT _LHUGE_VAL is a macro that is defined in math.h as being a
reference to an external variable. The variable was not
being exported from the library DLL. This has been
corrected.
-------------------------------------------------------------------------------
PJ15884 CRT Floating point number formatting has been changed to
better handle any precision for floating point numbers.
-------------------------------------------------------------------------------
PJ16026 CRT tmpnam() used to produce the same name in the first, tenth
hundreth call. It is guaranteed that it will now make
TMP_MAX unique names.
-------------------------------------------------------------------------------
PJ16273 CRT getcwd() and getdcwd() library functions will fail on
OS/2 Warp if the caller does not specify a buffer.
-------------------------------------------------------------------------------
PJ16025 BE In case of running out of file handles, tempnam() will
increase the number of allowable file handles and try
again.
-------------------------------------------------------------------------------
QUAL-IMP DLLRNAME DLLRNAME may not be able to handle renaming DDE4SBS.DLL
in the current directory.
-------------------------------------------------------------------------------
PJ16030 DLLRNAME Attempting to rename a DLL in another directory with DLLRNAME
results in the renamed DLL being left in the current
directory.
-------------------------------------------------------------------------------
PJ16031 CPPFILT CPPFILT has been modified so that it doesn't use CMD.EXE
to invoke a sub-program.
-------------------------------------------------------------------------------
PJ16057 C++FE The compiler was issuing an incorrect error for the
conversion of a pointer to a pointer to member of
the same type.
-------------------------------------------------------------------------------
PJ16083 C++FE The compiler was generating an error for a user
defined postfix increment operator for an enum.
-------------------------------------------------------------------------------
PJ16055 C++FE The value oxFFFFFFFF was not being accepted as a valid
enum value. It's size was also being set to the wrong
size.
-------------------------------------------------------------------------------
QUAL-IMP C++FE Mysterious external variables ___nnn being generated with
the /O+ compile option.
-------------------------------------------------------------------------------
PJ16056 C++FE #pragma export of an overloaded const and non-const
function was generating an error, and only one function
was being exported.
-------------------------------------------------------------------------------
QUAL-IMP C++FE New "#pragma defineonly" to match the AIX C Set++ compiler
-------------------------------------------------------------------------------
PJ15905 C++FE The compiler was trapping when it tried to issue an error
message for the invalid use of extern "C++" as a function
parameter.
-------------------------------------------------------------------------------
PJ15930 C++FE The compiler displayed 65536 as the column number when the
source file is a precompiled header file. This cause a
problem when trying to invoke an editor automatically under
the WorkFrame. The fix is to display 1 as the column
number when the source file is a precompiled header.
-------------------------------------------------------------------------------
PJ15931 C++FE In an array of dimension N containing pointers to member,
and with M initializers where M < N, the remaining N-M
members should be initialized to zero. Instead, they were
being left uninitalized and the first N-M were being
zeroed.
-------------------------------------------------------------------------------
PJ16032 C++FE Fixed problem with accessing base classes in hierarchies
containing virtual base classes.
-------------------------------------------------------------------------------
PJ16275 C++FE In some cases, temporary objects were being destructed
twice. In some other cases, objects caught in a catch
clause were not being destructed at all.
-------------------------------------------------------------------------------
QUAL-IMP Samples PMLINES sample program in SAMPLE1A used the WinPeekMsg()
API incorrectly, causing the sample to fail on OS/2 Warp.
===============================================================================
CTC0010 is informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-------------------------------------------------------------------------------
PJ14307 BE A dangling assignment to a floating point parameter inside
a function can cause a floating point stack overflow if
called often enough
-------------------------------------------------------------------------------
PJ14318 BE This fix will correct a boundary problem that occurs when
compiling with option /Gt+ if your program contains static
data objects exactly equal to 64K in size. The problem
does not occur when option /Gt- is specified.
-------------------------------------------------------------------------------
PJ14309 BE Fixed a register problem that may occur when using _alloca
with optimization.
-------------------------------------------------------------------------------
PJ14310 BE A floating-point parameter for a function call could be
set up incorrectly if the call is the last operation in a
function (the tail call optimization).
-------------------------------------------------------------------------------
PJ14311 BE Storing a char into an int and then later storing the int
back into the char could, in very rare circumstances,
produce incorrect code.
-------------------------------------------------------------------------------
PJ14312 BE Nested for loops in which the iteration variables are
members of the same structure may cause incorrect code
generation.
-------------------------------------------------------------------------------
PJ14313 BE Floating-point parameters may be left on the NPX register
stack if there is an "if {...}" immediately above a "for
(;;)" loop near the start of a function. This can later
result in a floating point stack overflow exception.
-------------------------------------------------------------------------------
PJ14314 BE An internal problem could result in a compile-time
exception when processing a function with floating-point
parameters.
-------------------------------------------------------------------------------
PJ14315 BE Calling a function with two or more similar aggregate
parameters could result in incorrect code generation.
-------------------------------------------------------------------------------
PJ14316 BE Incorrect code could be generated for 16-bit operations
that use the BP register when optimizing code without the
/Op- compile parameter also specified.
-------------------------------------------------------------------------------
PJ14317 BE If a conditional break inside an infinite loop jumps to a
return, static variables used in the loop may not be
correct at the return.
-------------------------------------------------------------------------------
QUAL-IMP BE Accessing an int as a bitfield structure has undefined
behaviour according to the ANSI C standard. However, the
behaviour has been changed so that it is more in line with
"intuitively obvious" behaviour.
-------------------------------------------------------------------------------
PJ14424 BE In very rare circumstances, incorrect code may be
generated when the only use of a parameter is a copy to a
local variable.
-------------------------------------------------------------------------------
QUAL-IMP BE Division and remainder operations that conditionally
execute within a loop could be moved outside of the loop,
perhaps causing unexpected divide-by-zero exceptions. (a
result of the invariant code motion optimizations)
-------------------------------------------------------------------------------
PJ14579 BE Under rare circumstances, due to an internal problem,
compiling a large C++ module with /O+ /Ti+ can cause a
compile-time exception.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The compiler was not restricting the change of char to
signed or unsigned char during integral promotions only.
They are three distinct types.
Note: This fix may cause code that previously compiled
cleanly to produce errors. It is simply the compiler
detecting an error that it wasn't detecting previously.
-------------------------------------------------------------------------------
PJ14428 C++FE When a variable is initialized , any temporaries that are
created in the initializer expression should have their
destruction delayed until the end of the block. For a
reference variable to a ternary expression this is not the
case and the destructors are being called too soon.
-------------------------------------------------------------------------------
PJ14431 C++FE Compiler traps while generating a message for an
inaccessible constant expression in a switch statement.
-------------------------------------------------------------------------------
QUAL-IMP C++FE Compiler may trap when generating the error message
EDC3004: "{" statement is not allowed in this scope.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The compiler issues an invalid error message for an
unrecognized type when the symbol is actually a template
argument T.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The compiler generates an error when trying to pass a
array argument to a class template that takes a char *
arg.
-------------------------------------------------------------------------------
QUAL-IMP C++FE A declaration without a type specification causes the C++
compiler front end to trap when generating an error
message.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The C++ compiler front end traps when compiling a
statement of the form:
<function typedef> <_Optlink specifier> <function name>
(<empty argument list>)
-------------------------------------------------------------------------------
PJ14433 C++FE The C++ compiler is restricting the use of:
#pragma comment(user,"..")
It can only occur once in a source file and must appear
before any C++ statements.
-------------------------------------------------------------------------------
PJ14434 C++FE The compiler is not generating a temp when passing an
array to a function that takes a const char * const &
argument. This results in a bad address being passed to
the function.
-------------------------------------------------------------------------------
QUAL-IMP C++FE When a nested type that is a typedef is used as a base
class the compiler checks the access of the target of the
typedef instead of the typedef name and an invalid access
error is generated.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The C++ language specifies that for non-member operator
functions, at least one of the arguments must be of class
type, reference to class, enum type, or reference to enum.
The compiler is generating an error for the definition of
a operator + function that takes an enum and an int as
parameters.
-------------------------------------------------------------------------------
QUAL-IMP C++FE Initialization of static reference variables is happening
at runtime static initialization instead of at compile
time.
-------------------------------------------------------------------------------
PJ14445 C++FE The preprocessor may generate the invalid error:
"The suffix for the floating point constant is not
valid."
when concatenating two valid tokens together to form a
floating point constant.
-------------------------------------------------------------------------------
QUAL-IMP C++RT A program that supplies its own version of delete may have
had the compiler supplied version called instead of the
user version when linking dynamically.
-------------------------------------------------------------------------------
QUAL-IMP C++RT Fixed problem where a duplicate symbol error was generated
by the linker when a user provided global new() was linked
into a program that also called set_new_handler().
-------------------------------------------------------------------------------
PJ14347 CFE If a variable is first declared as 'static' variable in
file scope, then declaration of the same variable name in
function scope should refer to the same variable. This
linkage of identifiers does not work properly when /Ti+ is
not specified.
-------------------------------------------------------------------------------
PJ14346 CFE Compiler generated segmented to flat pointer conversion is
missing for the following code segment:
char * fp;
unsigned long l = 0;
fp = l < 0
? 0
: (char* _Seg16)(void*)(void* _Seg16)l;
-------------------------------------------------------------------------------
PJ14343 CFE Compiler internal error occurs compiling unusually large
program with optimization turned on.
-------------------------------------------------------------------------------
PJ14345 CFE #pragma margins and /Sg options causes erroneous /Wppc
info message when the line ends at the right margin.
-------------------------------------------------------------------------------
PJ14325 CFE After Invoking the compiler from a network drive with
preload (/Tl) enabled, the network drive stays locked.
-------------------------------------------------------------------------------
PJ14329 CFE In macro expansion, preprocessor mistreats two dots
followed by any character as an elipsis.
#define test left..right
test is expanded to left..ight
-------------------------------------------------------------------------------
QUAL-IMP CFE Some #line directives with file names specified are not
processed properly by the compiler.
-------------------------------------------------------------------------------
QUAL-IMP CFE The compiler is failing to provide a closing double quote
(") on the executable name when calling LINK386. This
does not cause a problem with LINK386.EXE, but could cause
problems with other linkers.
-------------------------------------------------------------------------------
QUAL-IMP CFE When ICC is compiling TEMPINC files, it is possible that
compiling one TEMPINC file will update another one and
make it out of date. ICC needs to loop doing TEMPINC
compiles until all objects are up to date.
-------------------------------------------------------------------------------
PJ14445 CFE The preprocessor erroneous issues an error message for the
following legal macro expansion:
#define MAKEHEX(a) 0x##a
float j = MAKEHEX(2e);
-------------------------------------------------------------------------------
PJ14454 CFE The C compiler generates incorrect code when evaluating
the address of an array of array of structure members
within another structure, with array index of 0.
e.g. for the following structure, the values of
&s2.s1[1][0].j and &s2.s1[1]->j are not evaluated
properly:
struct {
int i;
struct {
int j;
} s1[2][3];
} s2;
-------------------------------------------------------------------------------
PJ14279 CRT getcwd() fails intermittently, returning an OS/2 error.
-------------------------------------------------------------------------------
PJ14281 CRT The spawnx() and execx() families of functions sometimes
pass a incorrect parameter list to the child process.
-------------------------------------------------------------------------------
PJ14308 CRT When a file is opened for low level I/O in text mode, and
the last character read from the file is a carriage return
('\r'), the _read() function moves the file pointer back
by 1. This causes incorrect results only if the next
operation on the file is _write() or _tell().
-------------------------------------------------------------------------------
PJ14456 CRT The TZ variable in the environment does not support
timezones which are not an integral number of hours
different from GMT. The format of the TZ variable has
been changed to support this now. The format is now:
SSS[+|-]hh[:mm[:ss]]DDD[,sm,sw,st,em,ew,ed,et,shift]
[] indicates optional parameters.
Note the addition of the minutes and seconds to the
offset.
-------------------------------------------------------------------------------
PJ14455 CRT On OS/2 2.11, the DosKillThread API cannot kill C library
routines that get input from the keyboard. This works on
OS/2 2.0 and 2.1, although it has unpredictable side
effects. The library has been changed to allow this
particular use of DosKillThread() to work safely on OS/2
2.11. Using the DosKillThread() API still has
unpredictable side effects on OS/2 2.0 and 2.1 (an OS
limitation).
-------------------------------------------------------------------------------
QUAL-IMP SCL A bug in ostrstream causes program to trap. The actual
bug is inside streambuf's sync(). It tries to put the end
of line character into an empty stream buffer.
-------------------------------------------------------------------------------
PJ14427 SCL Memory is allocated by the iostream library during static
initialization, but is not being freed during termination.
This causes a memory leak if the iostream functions are
statically linked to a DLL which is dynamically loaded and
unloaded.
-------------------------------------------------------------------------------
=========================================================================
CTC0009 is formal Corrective Service
The following fixes are provided in Compiler CS CTC0009
**************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
--------------------------------------------------------------------------
PJ13703 CFE Defining the first token in a program as
a character string with the /D option
causes an internal compiler error
--------------------------------------------------------------------------
QUAL-IMP CFE Label not found message does not
indicate which label is not found.
--------------------------------------------------------------------------
QUAL-IMP CFE Internal compiler error while generating
/Wenu messages for program with 'case'
statement outside 'switch' scope.
--------------------------------------------------------------------------
PJ13705 BE Fixed a parameter passing problem that
occurs when the last statement of a
function is to a _Pascal function.
--------------------------------------------------------------------------
QUAL-IMP BE Allow the optimizer to assign registers
a little more efficiently in certain
circumstances.
--------------------------------------------------------------------------
PJ13706 BE A loop that contains a goto to a return
could, in rare cases, cause incorrect
code generation.
--------------------------------------------------------------------------
PJ12329 CRT A 16-bit function will get a protection
exception if the function has a large
automatic storage area. This problem
occurs on secondary threads, and happens
because the stack is not committed when
the thread begins execution and the
16-bit code does not have stack probes.
The compiler runtime code that sets up
the 16bit stack needs to commit it.
--------------------------------------------------------------------------
PJ13704 CRT Compiling 16-32 callback funtions with
static link results in duplicate references
when linking.
Reference APAR PJ12507
--------------------------------------------------------------------------
QUAL-IMP CRT Now checking if a destructor exists
during error recovery in __vec__copy().
May have caused traps
=========================================================================
CTC0008 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0008
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ12307 BE Cannot access local variables of callback
functions within the Debugger.
-------------------------------------------------------------------------
PJ12325 BE Incorrect code may be generated for a
conditional increment or decrement if the
comparison is signed.
-------------------------------------------------------------------------
PJ12340 BE The conversion of an address to a segmented
address may be incorrectly done if the
address involves an index calculation
(ie: &array{i-1})
-------------------------------------------------------------------------
PJ12341 BE A register used by strncat() could be
clobbered under rare circumstances and
cause incorrect behaviour.
-------------------------------------------------------------------------
PJ12376 BE Fixed an internal problem with the handling
of conditional increments with side effects.
-------------------------------------------------------------------------
PJ12431 BE Incorrect register selection could cause
incorrect results when performing a bitwise
AND (&) with a constant.
-------------------------------------------------------------------------
PJ12507 BE & CRT Compiling 16 to 32 callback functions with
/Gh+ causes a run-time trap.
-------------------------------------------------------------------------
QUAL-IMP BE Incorrect register selection could lead to
traps or unexpected results with 32 to 16 to
16 to 32 code.
-------------------------------------------------------------------------
QUAL-IMP BE Fixed a problem similarto PJ11975 for
conditional decrements.
-------------------------------------------------------------------------
PJ12567 CRT Exception handler was not deregistered within
heap_check when using /TM+
-------------------------------------------------------------------------
PJ12326 CFE If listing is enabled (/Ls, /Li, or /Lj) and
the source code contains nested #if, #elif
and #ifdef, the compiler might fail with
unexpected compiler error.
-------------------------------------------------------------------------
PJ12327 CFE & C++FE After compiling programs with preload turned
on, sometimes the front-end traps after the
compilation is completed.
-------------------------------------------------------------------------
PJ12477 CFE The compiler was not checking against
possible errors reading the source and
header files.
-------------------------------------------------------------------------
PJ12490 CFE ICC will be changed to ignore /Si+ option
when /Fb+ option is specified.
-------------------------------------------------------------------------
QUAL-IMP CFE Pre-load program was not checking the return
codes from some API calls.
-------------------------------------------------------------------------
QUAL-IMP CFE If the compiler is first invoked from a
directory with preload option enabled, while
the compiler stays loaded, the user is
prevented from removing the directory.
This is inconvenient for the user.
-------------------------------------------------------------------------
QUAL-IMP CFE Compiling program with function calls with
very large number of arguments causes
compiler to trap.
-------------------------------------------------------------------------
PJ12378 C++FE If a class is _Exported, then a member
function is subsequently defined to be
"inline", the compiler still tells the linker
to export the function. This causes an
"undefined external" linker error.
-------------------------------------------------------------------------
PJ12388 C++FE A C++ program compiled with optimization
will cause the front-end to trap if a "const
int" static class data member is referenced
with explicit class qualification.
-------------------------------------------------------------------------
PJ12427 C++FE Erroneous conversion error between typedefs,
friend functions and the use of the friend
function.
-------------------------------------------------------------------------
PJ12445 C++FE Compiler trap processing declaration of const
var symbol previously used without being
declared.
-------------------------------------------------------------------------
PJ12479 C++FE Preprocessor trap when processing a macro
defined to NULL
-------------------------------------------------------------------------
PJ12492 C++FE When one anonymous union is nested inside
another in a C++ program, incorrect addresses
are generated for the union members.
-------------------------------------------------------------------------
QUAL-IMP C++FE Fixed #pragma page() and #pragma skip() so
that a listing file will not be generated if
the listing option is not activated on the
command line.
-------------------------------------------------------------------------
QUAL-IMP C++FE If the argument list of a macro is supplied
via another macro, the macro might not be
expanded as expected.
Note: Corresponding CFE fix was implemented
in CTC0006 as PJ11929
-------------------------------------------------------------------------
QUAL-IMP C++FE Wrapper <demangle.h> with #pragma pack
-------------------------------------------------------------------------
PJ12328 UTIL When a new C Set++ project (ie. no compiler
options have been set), is invoked under the
build action on the WorkFrame, the compiler
DLL will return the default action. The
default action is not to generate any .W
files.
-------------------------------------------------------------------------
PJ12522 UTIL Munch was giving the error "assert
<line_number> invalid object record." This
error was incorrectly being produced for
valid object record formats.
=========================================================================
CTC0007 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0007 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ11951 BE & CFE The optimizer misses a chance to inline
certain C++ functions.
-------------------------------------------------------------------------
PJ11979 CFE In source code:
int main (void) {
int a, b; b = 1; a = 2; return 0;
}
The symbols for a and b are generated in a
different order depending on whether /Ti is
on. They should be generated in the same
way no matter what the /Ti setting is.
-------------------------------------------------------------------------
QUAL-IMP CFE When /La compiler option is used, some of the
structures and unions are incorrectly shown
in the listing
-------------------------------------------------------------------------
PJ12108 CRT Library fixes made to solve problems when
debug allocated objects were freed with
non-debug routines and vice-versa.
In addition the environment variable
DDE4_HEAP_SKIP was added whereby the user can
skip the _heap_check that occur when debug
routines are invoked. The syntax is as
follows:
set DDE4_HEAP_SKIP=increment,starting
where: 'increment' is how often a
heap_check will be invoked, and 'starting'
(which is optional) is how many calls to
debug memory routines must occur before
heap_checks are done.
Example: DDE4_HEAP_SKIP=100,1000
will perform a heap_check after 1000 debug
memory routines have been called and on every
100 calls after that.
Example: DDE4_HEAP_SKIP=50
will perform a heap_check on every 50 calls
made to a debug memory routine
Note: If DDE4_HEAP_SKIP is not set in the
environment then the default will be to
invoke heap_check on every call to a debug
memory routine.
=========================================================================
CTC0006 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0006 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ11896 BE Optimization Problem: A for loop that
functions like a memcpy() could be
incorrectly optimized if the source of the
copy is a struct member.
-------------------------------------------------------------------------
PJ11952 BE Optimization Problem: An internal problem
with expression simplification could result
in incorrect code generation.
-------------------------------------------------------------------------
PJ11953 BE Optimization Problem: Within an inner switch
of nested switches, a goto jumping to a break
for the outer switch could be turned into a
break for the inner switch.
-------------------------------------------------------------------------
PJ11975 BE Optimization Problem: Statements of the form:
"if (f1 < f2) i++", where f1 and f1 have
floating-point datatypes, could cause a
compile-time exception in the BE.
-------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: MOD operations could
generate results of the wrong sign if both
operands are negative. Similar results could
occur for MOD and DIV by a negative power of
2.
-------------------------------------------------------------------------
QUAL-IMP BE Fixed a small problem with the generated
assembler listing file - an incorrect symbol
could be used.
-------------------------------------------------------------------------
PJ11872 C++FE Fixed a trap in the C++ frontend. The trap
occurred when we tried to compile a source
file that contained a class that had 2
declarations of the same friend function and
a typedef for that function.
-------------------------------------------------------------------------
PJ11887 C++FE Fixed a trap when compiling code with a
definition of a function with _Far16 _Pascal
linkage.
-------------------------------------------------------------------------
PJ11981 C++FE If a conversion function yields a reference
to a class with constructors, and a temporary
is built from the result of that conversion,
the temporary is initialized by bitwise
copying instead of by calling its copy
constructor.
-------------------------------------------------------------------------
PJ11982 C++FE The compiler will deliberately not inline
some functions if doing so would break C++
exception handling. However, when exception
handling is disabled by /Gx+, the compiler
still fails to inline those functions.
-------------------------------------------------------------------------
PJ11983 C++FE A complex expression containing more than one
conditional subexpression (i.e. the x ? y :
z construct) may be generated such that the
subexpressions are evaluated in the wrong
order.
-------------------------------------------------------------------------
PJ11984 C++FE An inline function consisting of a single
return statement that returns a
type-converted parameter may be incorrectly
inlined.
-------------------------------------------------------------------------
PJ11881 CFE Sizeof typedef within sizeof sometimes
returns arbitrary value.
-------------------------------------------------------------------------
PJ11929 CFE If the argument list of a macro is supplied
via another macro, the macro might not be
expanded as expected.
-------------------------------------------------------------------------
PJ11889 CRT If the function that executes when a thread
begins execution calls 16-bit code, then
EDCThunkProlog is called from within the
function prolog. EDCThunkProlog tries to
access data that is outside the stack frame,
and since this is the first frame on the
stack, that storage is not allocated to the
stack. A protection exception occurs.
=========================================================================
CTC0005 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0005 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11625 BE Optimization Problem: Compiling source that
contains floating-point code could cause a
compile-time trap in the backend.
------------------------------------------------------------------------
PJ11688 BE Optimization Problem: Statements of the form
"do { i++; } while (condition); i--;" could
be incorrectly optimized.
------------------------------------------------------------------------
PJ11692 BE Incorrect debug info could be generated for a
data member of a class with type "char *
const".
------------------------------------------------------------------------
PJ11695 BE Optimization Problem: Instruction scheduling
could clobber the result of constant multiply
across a call.
------------------------------------------------------------------------
PJ11696 BE Optimization Problem: Using an int variable
as an array of chars within a loop could
result in incorrect code generation.
------------------------------------------------------------------------
PJ11697 BE Optimization Problem: Statements of the form
"while (cond) { if (--i) { i++; break; } }"
could be incorrectly optimized.
------------------------------------------------------------------------
PJ11698 BE Optimization Problem: If the "count" paramter
of strncat() is a builtin string function,
incorrect code could be generated.
------------------------------------------------------------------------
PJ11699 BE Optimization Problem: Tail calling a _Pascal
function from another function could result
in an exception at run-time.
------------------------------------------------------------------------
PJ11701 BE strncat() could copy one byte even if "count"
parameter is a variable of value 0.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Adding two negative
numbers and then negating the result could be
optimized incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE Without optimization, an expression of the
form "*((char*)&array[index]+i)" could
generate an incorrect OBJ even though the
ASM is correct.
------------------------------------------------------------------------
PJ11491 C++FE new() is not returning a valid pointer when
allocating a 0-sized array.
------------------------------------------------------------------------
PJ11492 C++FE The delete() operator for an object was not
being called with the debug parameters when
that object was being deleted because its
constructor threw an exception.
------------------------------------------------------------------------
PJ11574 C++FE Reduce the long link times and large swapper
file created when linking C++ programs that
contain templates.
------------------------------------------------------------------------
PJ11575 C++FE If a virtual base class appears more than
once in the class hierarchy, then one copy of
if may be initialized several times and the
other copies not initialized.
------------------------------------------------------------------------
PJ11584 C++FE The compiler may crash when generating debug
information for a class that has no
user-supplied nor compiler-generated inline
functions. This is rare, since there are
usually some compiler-generated ones.
------------------------------------------------------------------------
PJ11585 C++FE If a C++ compilation includes definitions of
classes that contain virtual functions, all
of which are inline functions, the compiler
will generate those classes and functions
whether or not they are actually used. This
fix generates them only when necessary
------------------------------------------------------------------------
QUAL-IMP C++FE A C++ program containing a brace-enclosed
statement block outside of a function body
crashes the front-end when compiled with
/Wuse+ if there is an unused label define
in the block
------------------------------------------------------------------------
QUAL-IMP C++FE A goto within a catch block is incorrectly
diagnosed as a jump into the catch block,
which is illegal since it bypasses
initialization of the catch variable
------------------------------------------------------------------------
QUAL-IMP C++RT Fixed memory leak that occurred when memory
is allocated for an object however, it is not
constructed because it's constructor threw an
exception.
------------------------------------------------------------------------
PJ11702 CFE The compiler is not recognizing a constant
expression properly when initialization
involves an array within a structure within
an array of structures
------------------------------------------------------------------------
PJ11703 CFE Using CSD 1 of C Set ++, the test case is
expected to have a warning message, but the
compiler should not be trapping.
------------------------------------------------------------------------
PJ11686 CRT The problem lies in reading across memory
blocks. The code did not take into account
of the number of characters read in from the
previous blocks and hence reading more than
necessary.
------------------------------------------------------------------------
PJ11687 CRT AL register will now be set by the library
when making a call to DosGetMessage.
=========================================================================
CTC0004 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0004 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11127 BE Optimization Problem: Multiplying a variable
by a constant and the adding or subtracting 1
could result in incorrect code generation.
------------------------------------------------------------------------
PJ11128 BE Optimization Problem: An internal problem
could result in traps or unexpected results
with 32 to 16 or 16 to 32 code.
------------------------------------------------------------------------
PJ11129 BE Optimization Problem: In rare circumstances,
doing arithmetic with shorts could result in
traps or unexpected results.
------------------------------------------------------------------------
PJ11134 BE Optimization Problem: The result of a right
shift of a negative value, though
implementation defined, could differ at /O-
and /O+.
------------------------------------------------------------------------
PJ11135 BE Optimization Problem: The backend could abort
with fatal error EDC4005 in intermediate file
ROOPT when optimizing an if-then-else.
------------------------------------------------------------------------
PJ11137 BE Optimization Problem: Expressions of the
form: "*(float *) &var", where var is an int,
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11138 BE Optimization Problem: An internal problem
occuring when compiling floating-point code
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11139 BE Incorrect code could be generated when
negating a char variable and then storing the
result into an int variable.
------------------------------------------------------------------------
PJ11140 BE Optimization Problem: Statements of the form:
"x--; if (cond) x += 2;" may be incorrectly
optimized.
------------------------------------------------------------------------
PJ11141 BE Run-time traps could occur in code using 16
to 32 callback functions if the code crossed
a 64K boundary.
------------------------------------------------------------------------
PJ11142 BE When using strncat(), an extra NULL was being
appended to the end of the destination string
if the length of the source string was less
than "n".
------------------------------------------------------------------------
PJ11143 BE Optimization Problem: Statements of the form:
"if (!x) {y = 0;} else {y = 1;}" could cause
a compile-time trap if x is a float-point
type.
------------------------------------------------------------------------
QUAL-IMP BE Under certain conditions, the optimizer could
leave around some useless LEA instructions.
This has now been fixed.
------------------------------------------------------------------------
QUAL-IMP BE When exporting callback functions, an
incorrect symbol could be used, resulting in
link errors.
------------------------------------------------------------------------
PJ11176 CFE Compiler generates incorrect code for
referencing array of array in structure
with array index of 0.
ie: a.b[i][0].c = 1; a.b[i]->c = 2;
------------------------------------------------------------------------
PJ11177 CFE If a variable is first declared and then
initialized both with a typedef type and
a qualifier, the compiler generates incorrect
code.
ie: const typedef_name var;
const typedef_name var = 0;
------------------------------------------------------------------------
PJ11179 CFE When initializing a member of a structure
casting the member to _Seg16 pointer causes
unexpected compiler error.
------------------------------------------------------------------------
PJ11180 CFE When #pragma handler is specified for some
functions, the compiler randomly generates
incorrect code that exports some of those
functions.
------------------------------------------------------------------------
PJ11181 C++FE The following message is produced when both
sides of a conditional expression are the
same:
recoverable EDC4005: Error occured in
intermediate file RBEXPR(4902)
------------------------------------------------------------------------
PJ11182 C++FE An initialized function-scope static variable
will cause the C++ front end to GPF if a
compiler temporary is required when
evaluating the initializing expression.
------------------------------------------------------------------------
PJ11183 CRT FILE struct members violate user name space.
------------------------------------------------------------------------
PJ11185 CRT MATHERR not handling domain errors.
=========================================================================
CTC0003 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0003 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10704 BE Incorrect debug information could cause IPMD
to trap in DDE4BE32.DLL while debugging C++
programs.
------------------------------------------------------------------------
PJ10705 BE Incorrect debug information for const member
functions could cause expression evaluation
problems in IPMD.
------------------------------------------------------------------------
PJ10706 BE Incorrect debug information could cause IPMD
to hang when debugging large programs.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect debug information could confuse
IPMD while debugging C++ programs.
------------------------------------------------------------------------
PJ10461 CRT Serialization code used in the runtime
library may cause system traps. This
usually occurs when one of the thread
unexpectedly terminates.
------------------------------------------------------------------------
PJ10703 C++RTL CPPFILT utility truncates the mangled
function names if it is greater than 233
characters.
=========================================================================
CTC0002 is formal Corrective Service
The following fixes are provided in Compiler CS CTC0002 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10544 BE Optimization Problem: Compiling with /G5 /Ms
may optimize SUB ESP,4 into PUSH EAX at
inappropriate places.
------------------------------------------------------------------------
PJ10545 BE Incorrect code may be generated when copying
structures whose size is less than 12 bytes.
------------------------------------------------------------------------
PJ10546 BE Optimization Problem: An internal problem
during common subexpression elimination could
cause a compile-time exception.
------------------------------------------------------------------------
PJ10547 BE Optimization Problem: Incorrect code
generation may result when optimizing a loop
that contains a goto which acts like a break.
------------------------------------------------------------------------
PJ10549 BE Optimization Problem: Instruction scheduling
may move instructions out of the protected
area between _disable and _enable.
------------------------------------------------------------------------
PJ10550 BE Optimization Problem: Returning a floating
point value as an integer may cause problems
on machines without FP co-processors when
compiled with /O and either /G4 or /G5.
------------------------------------------------------------------------
PJ10552 BE The enum data offset field of a COMDAT placed
in a user segment was being set to a non-zero
value.
------------------------------------------------------------------------
PJ10553 BE Optimization Problem: An internal problem
could cause a compile-time trap when
compiling with /O+ /Gf+.
------------------------------------------------------------------------
PJ10556 BE The BE was not growing the number of file
handles available. This caused a
compile-time exception when the BE ran out of
file handles.
------------------------------------------------------------------------
PJ10557 BE Optimization Problem: Calling a 32-bit
function from the last statement of a _Far16
_Pascal function could be compiled
incorrectly.
------------------------------------------------------------------------
PJ10558 BE Optimization Problem: The incorrect register
may be cleared when returning 0.
------------------------------------------------------------------------
PJ10559 BE A constant left-shifted by another constant
may be folded incorrectly when compiled with
/Gi.
------------------------------------------------------------------------
PJ10560 BE Optimization Problem: Tail call optimization
was being incorrectly applied to a call to a
pascal linkage function from a system linkage
function.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Bad register selection
around switch statements could cause
incorrect code generation.
------------------------------------------------------------------------
QUAL-IMP BE With C++, returning a complex structure from
a function whose destructor has been inlined
could be compiled incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE An internal problem could cause a
compile-time trap when compiling, with /Gr
/Rn, a _Far32 _Pascal function that returns a
pointer.
------------------------------------------------------------------------
PJ10478 CFE The preprocessor was getting an internal
compiler error for certain macro expansion.
------------------------------------------------------------------------
PJ10477 CFE If a source/header file contains null
characters, the compiler gets an internal
compiler error and may result in a huge
swapper that may bring down your system.
------------------------------------------------------------------------
QUAL-IMP CFE Error message was being erroneously issued
when '_Export" keyword or '#pragma export'
are specified more than once for the same
object.
------------------------------------------------------------------------
PJ10566 C++FE Conversion function results in an
unconstructed temporary. No constructor was
called for the temporary object.
------------------------------------------------------------------------
PJ10567 C++FE When passing a class as a by value parameter
a temporary is not used and the class is
passed by reference.
------------------------------------------------------------------------
PJ10568 C++FE Member friend incorrectly inherits function
linkage from linkage specifier.
------------------------------------------------------------------------
PJ10569 C++FE Invalid Error message EDC3458 produced.
------------------------------------------------------------------------
PJ10570 C++FE GPF calling virtual member function of a
template class when the module uses #pragma
data_seg.
------------------------------------------------------------------------
PJ10571 C++FE Invalid error for postfix operator ++ on a
reference in a conditional expression.
------------------------------------------------------------------------
PJ10572 C++FE Invalid error message EDC3276 and GPF when
compiling a conditional expression.
------------------------------------------------------------------------
QUAL-IMP C++FE Runtime GPF accessing static data member
at location 0.
------------------------------------------------------------------------
QUAL-IMP C++FE /Ms causes a runtime GPF when exception
handling is used.
------------------------------------------------------------------------
PJ10462 CRT Thunk Prologue incorrectly probes stack
causing system traps. This may occur
with any 32-16 calls not in thread one.
------------------------------------------------------------------------
QUAL-IMP CRT Free not handling debug object. An debug
memory object (as allocated by the debug
memory routine) can cause system trap
after it is passed to the regular free()
function for freeing.
------------------------------------------------------------------------
QUAL-IMP CRT Spawn/Exec family functions should ignore
net error. If the net error is not ignored,
the search on the PATH stops prematurely,
which may cause spawns/exec functions not to
find any program whose path appears
after the net work path causing the error.
------------------------------------------------------------------------
QUAL-IMP UTIL Compiler dialog did not parse a file when the
file contains a '//' comment. It ignored
lines after the '//' character until a blank
line is reached.
------------------------------------------------------------------------
QUAL-IMP UTIL Dialog did not free up memory when saving
or retrieving information to/from the project
file extended attribute.
=========================================================================
CTC0001 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0001 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ09575 DOC Hitting Ctrl H in EPM for contextual help
did not work for printf or scanf. A change
was made in the DDE4CLIB.NDX file..
------------------------------------------------------------------------
QUAL-IMP ICC When /Fa compilation switch was used to
create assembler file, and a template file
was compiled, the compiler trapped.
------------------------------------------------------------------------
QUAL-IMP ICC Added the description of /Tm option to ICC
help.
------------------------------------------------------------------------
PJ09573 FE Fixed the compiler to disallow illegal
initialization of two-dimensional array
of char with character string without braces.
------------------------------------------------------------------------
PJ09574 FE Structure initialization failed with an
extra set of braces.
------------------------------------------------------------------------
QUAL-IMP FE Usage of _Export keyword caused the compiler
to fail.
------------------------------------------------------------------------
QUAL-IMP UTIL Beta project causes Workframe to trap.
------------------------------------------------------------------------
QUAL-IMP UTIL Update English panels to fix a Japanese
VGA screen.
------------------------------------------------------------------------
QUAL-IMP UTIL Remove the minimize capability of the
notebook dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL No keyboard focus when the notebook dialog
first appears.
------------------------------------------------------------------------
QUAL-IMP UTIL Incorrect focus when Alt key is pressed
inside a dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL /Xc should not generate any command line
include paths.
------------------------------------------------------------------------
QUAL-IMP C++FE The /Ms option is changing the linkage of
internally declared compiler functions.
This can result in runtime traps when using
memory management or C++ exception handling.
------------------------------------------------------------------------
QUAL-IMP C++FE The linker fails when using /ND to rename
a data segment. The compiler is generating
bad code for partially initialized
structures.
------------------------------------------------------------------------
QUAL-IMP C++FE Using the compiler options /La or /Lb causes
the compiler to trap.
------------------------------------------------------------------------
PJ09576 C++FE Linking a program that contains templates
causes an invalid error to be generated by
lib.exe. The error is "LIB0007: Error :
Unable to open D:\00900000.6.OBJ"
------------------------------------------------------------------------
PJ09577 C++FE Large program with many template functions,
(more than 1023), traps at runtime.
------------------------------------------------------------------------
PJ09578 C++FE When linking programs that contain templates
and object files that were generated by TASM
the message: "Unknown Record Type {ox..},
offset {..} is generated.
------------------------------------------------------------------------
PJ09579 C++FE The compiler is incorrectly resolving to a
function template instead of using a
previously declared member function.
------------------------------------------------------------------------
PJ09580 C++FE Object destructors are not always run after
a throw statement.
------------------------------------------------------------------------
PJ09581 C++FE Compiling code that uses _Far16 and _Pascal
keywords causes an internal compiler error:
"Exception #C0000005: 30751 occurred in
file .., function .."
------------------------------------------------------------------------
QUAL-IMP C++RT Incorrectly handling exceptions in multiple
runtime environments.
------------------------------------------------------------------------
PJ09568 BE Compiling source files with the same names
may result in conflicting BSS static areas.
------------------------------------------------------------------------
PJ09570 BE Optimization Problem: Incorrect code could be
generated when the result of a comparison is
subtracted from a variable.
------------------------------------------------------------------------
PJ09571 BE The debug info could become corrupted in very
large files which results in only assembler
view being available within IPMD.
------------------------------------------------------------------------
PJ09572 BE Optimization Problem: An internal problem
during loop optimizations could cause a
compile-time exception in the back-end.
------------------------------------------------------------------------
PJ09569 BE Optimization Problem: Incorrect code could be
produced for loops ending with an
if-then-else where the last statement of the
else is a break.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem in
store removal could cause incorrect code.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem
may cause a compile-time exception in the
back-end.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect code generation for _Far16 _Pascal
functions that return floating-point types
could cause a run-time exception.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem,
when compiling with /Ti+, may cause incorrect
code generation for breaks within loops.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: The optimizer was
incorrectly folding (0 / x) and (0 % x).
------------------------------------------------------------------------
QUAL-IMP BE Casting a floating-point value to int and
then comparing the result to another int that
was previously cast from a floating-point
value may produce incorrect results.
========================================================================= |
![]() |
||
CTC0012 v. 2.x (Compiler Subcomponent of C Set ++, 20/12/1995, International Business Machines Corporation (IBM)) | Readme/What's new |
CTC0012 is a CSD (set of fixes) for the Compiler Subcomponent of
C Set ++ for OS/2, Versions 2.0 and 2.1.
All the Compiler CSDs are cumulative, so you only need to apply the
latest one (i.e. the one with the highest number after the CTC prefix).
The CSD must be applied using the provided installation tools.
CSD CTC0012 is an Informal Corrective Service.
Files in this directory:
------------------------
csdfixes.lst - a text file that lists the fixes that are included in this CSD.
You may want to get this file to see what fixes are included
before getting the actual CSD. This file is included in the
ZIP file, so you do not need to get it if you are getting the
ZIP file.
ctc0012.zip - contains the CSD.
readme.txt - this file
Instructions:
-------------
Get the ZIP file in binary mode.
Unpack the ZIP file into a clean directory.
Install using the provided SERVICE.EXE program.
Contact:
--------
If you have any questions about these files, please contact
cset2@vnet.ibm.com.
C Set ++ Compiler Version 2.0
Fixes List
-----------------------------
*******************************************************************************
* *
* This CSD contains fixes that are common to C/C++ Tools Version 2.0 and *
* Version 2.01. Notwithstanding the version statements contained in the *
* files of this CSD, this is not an upgrade of Version 2.0 to Version 2.01. *
* *
* The code to which you have access is determined by the version of the *
* software to which you are licensed. *
* *
*******************************************************************************
===============================================================================
CTC0012 is informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------------
PJ19826 BE Fixes a problem where the code optimizer was generating
incorrect code in a tail-call optimization, which then
leads to stack memory corruption at runtime.
-------------------------------------------------------------------------------
PJ19827 BE Fixes a problem where incorrect code was generated when
passing a structure by value to a function when the size
of the structure was 45 to 47 bytes.
-------------------------------------------------------------------------------
PJ19853 BE Fixes a problem where the code optimizer may generate
incorrect optimized code for a for-loop when the loop
boundary values are array or structure elements. This
causes the loop body to be executed only once regardless
of the actual number of iterations defined.
-------------------------------------------------------------------------------
PJ19854 BE Fixes a problem where the code generator is not doing
correct integral promotion in some expressions, in which
there are char or short variables.
-------------------------------------------------------------------------------
PJ19855 BE Fixes a problem where the code optimizer may trap when
pushing floating-point parameters for function calls.
-------------------------------------------------------------------------------
PJ19856 BE Fixes a problem where the code generator may create code
that corrupts the stack in a stmt like "t = foo().x", when
the member of a structure returned by a function is stored
to a variable on stack.
-------------------------------------------------------------------------------
PJ19857 BE Fixes a problem where the code generator may incorrectly
generate an FSUBR instruction using a 10-byte memory
operand (which is an illegal instruction)
-------------------------------------------------------------------------------
PJ19858 BE Fixes a problem where the code optimizer may incorrectly
generate code to inline code of the form:
strcat(memcpy(..))
-------------------------------------------------------------------------------
PJ19859 BE Fixes a problem where the code optimizer traps when
handling a negative multiplier.
-------------------------------------------------------------------------------
PJ19860 BE Fixes a problem where the code optimizer incorrectly
performed strength reduction if an induction variable was
a member of a structure.
-------------------------------------------------------------------------------
PJ19869 BE Fixes a problem where simple functions containing code
like the following:
if (x) return y;
else return z;
may leave floating-point parameters on the NPX stack after
function exit.
-------------------------------------------------------------------------------
PJ19874 BE Fixes a problem where a floating-point value could be left
on the NPX register stack if a floating-point value
returned by a function is assigned but not used.
-------------------------------------------------------------------------------
PJ19875 BE Fixes a problem in code generation when using _outp() with
the value parameter being an expression.
-------------------------------------------------------------------------------
PJ19877 BE Fixes a problem in code generation with /O+ /G5 switches
in code containing calls to memchr() where the count is
non-constant and evaluates to zero.
-------------------------------------------------------------------------------
QI 36859 BE Fixes a problem where the optimizer could generate bad
code for accessing local variables.
-------------------------------------------------------------------------------
QI 36866 BE Fixes a problem where the optimizer generates incorrect
code in returning a structure which causes memory
corruption.
-------------------------------------------------------------------------------
QI 36868 BE Fixes a problem where the could cause source of the form
((USHORT)((ULONG) x)) to generate bad code.
-------------------------------------------------------------------------------
QI 36891 BE Fixes a problem where a MOD operation could cause the
code generator to go into an infinite loop.
-------------------------------------------------------------------------------
PJ19868 ICL Fixes a problem where the intermediate code linker
cannot handle compiling of more than 256 files. It would
either trap or generate a "cannot open immediate file"
error message.
-------------------------------------------------------------------------------
PJ19876 ICL Fixes a problem with /Ti that can cause ICL to issue a
fatal error when compiling C++ files with pointers to
member functions
-------------------------------------------------------------------------------
QI 47562 ICL Fixes a problem with /Ti that can cause BE to generate
'error in intermediate file RBDEBUG(..)' message.
-------------------------------------------------------------------------------
PJ19834 CFE Fixes a problem where an unexpected compiler error occurs
in some programs containing duplicate declarations of
structures
-------------------------------------------------------------------------------
PJ19835 CFE Fixes a problem where the preprocessor does not always
expand some macros in #if directive correctly.
-------------------------------------------------------------------------------
PJ19847 CFE Fixes a problem where the preprocessor is not always
paste tokens together properly.
-------------------------------------------------------------------------------
PJ19850 CFE Fixes a problem where the compiler is not propagating the
volatile property of a structure to the structure's
members
-------------------------------------------------------------------------------
PJ19904 C++FE Fixes a problem with the C++ compiler, where it was
generating an invalid error EDC3263 message for a template
class with a non-inline member function
operator const T * () const;
-------------------------------------------------------------------------------
PJ19905 C++FE Fixes a problem with the C++ compiler, where data and
function members inherited through virtual bases may be
accessed incorrectly. When accessing a virtual base
class, or a base of a virtual base, certain inheritance
hierarchies would cause the wrong base class to be
accessed, and therefore the wrong data member to be
accessed or the wrong virtual function table to be used.
-------------------------------------------------------------------------------
PJ19906 C++FE Fixes a problem where the C++ compiler trapped on invalid
source. (specifying "_Seg16" before "*" of a pointer
variable)
-------------------------------------------------------------------------------
PJ19907 C++FE Fixes a problem where the C++ compiler generated code that
could cause object destructors to be called twice during
exception processing
-------------------------------------------------------------------------------
QI 28455 C++FE Fixes a problem where the C++ compiler generated an
inconsistent function name when the function name is
declared inside a structure of an anonymous union. When
mangling a name, It now doesnot generate the part for the
anonymous union.
-------------------------------------------------------------------------------
PJ19820 CRT Fixes a problem with _access().
The _access() library function may fail if there are no
available file handles. This has been changed so that if
the process run out of file handles, _access() will
increment the maximum number of handles available to the
process.
-------------------------------------------------------------------------------
PJ19829 CRT Fixes a problem with printf().
printf() failed with precision 0 and argument 0 in
integral conversions, producing no output. This has been
changed to fill the space specified by width with blanks.
-------------------------------------------------------------------------------
PJ19831 CRT Fixes a problem handling exceptions inside the library
termination code. Exception handling requires thread
local storage which may have been freed if an exception
happens inside termination code. Exceptions inside
library terminatin code are no longer handled, by the
library, but are passed to the OS for handling.
-------------------------------------------------------------------------------
PJ19833 CRT Fixes a problem reloading a locale. If setlocale() was
called twice for the same locale, the second call will
free the storage used to store locale specific
information, but will not allocate new storage, and
dangling reference will occur. The fix allows a new
locale to use already allocated storage.
-------------------------------------------------------------------------------
PJ19851 CRT Fixes a problem with _strcoll().
The strcoll() library function may fail if its first
argument is substring of the second argument. The
function has been fixed to behave symetrically regarding
its arguments.
-------------------------------------------------------------------------------
PJ19852 CRT Fixes a problem with _heapmin().
If there are large objects allocated from the heap, the
_heapmin() function may cause memory leaks.
-------------------------------------------------------------------------------
QI 49096 CRT Fixes a process termination exception.
An exception could happen at process termination if any of
the standard streams are closed. A subsequent malloc()
could reuse the memory used by standard streams, but the
run-time still thinks it owns the memory.
===============================================================================
CTC0011 is informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------------
QUAL-IMP BE Compiling a module without a main() function using the /O
/Ol /Gu options could result a compile-time trap.
-------------------------------------------------------------------------------
QUAL-IMP BE When the multiplication of char or short constants results
in an overflow, incorrect code may be generated if the
result of the multiply is used in a comparison.
-------------------------------------------------------------------------------
QUAL-IMP BE An internal problem could result in a compile-time
exception when compiling a switch with /O+ /Ti+.
-------------------------------------------------------------------------------
QUAL-IMP BE In rare cases, stack space allocated by _alloca() could
become corrupted when using auto-inlining.
-------------------------------------------------------------------------------
QUAL-IMP BE Fixed an internal problem which in rare circumstances
could cause incorrect code generation
-------------------------------------------------------------------------------
PJ15990 BE ICL: When compiling with /Fw to generate intermediate
files, a bug in the ICL could result in the incorrect
intermediate files which causes the compiler backend
to trap.
-------------------------------------------------------------------------------
PJ16021 BE Defining an uninitialized variable of type double in more
than one module results in a LINK386 L2025 error (symbol
defined more that once).
-------------------------------------------------------------------------------
PJ15991 BE ICL: A bug in the ICL could cause a compile-time trap
in the compiler back end when the /Ol+ option is used.
-------------------------------------------------------------------------------
PJ15987 BE An internal problem occurring during register assignment
could cause a compile-time exception.
-------------------------------------------------------------------------------
PJ16024 BE Fixes a problem where the epilog of a function could
be incorrect if the function contains a call to _alloca.
-------------------------------------------------------------------------------
PJ15881 BE Statements of the form "x ? INT_MAX : INT_MIN;" could be
optimized incorrectly.
-------------------------------------------------------------------------------
PJ15876 BE The last compare and jump in strncat() should be unsigned
rather that signed.
-------------------------------------------------------------------------------
PJ15882 BE Fixed a problem where compiling with /Gr and then running
at ring 0 causes a Stack Segment Overrun trap.
-------------------------------------------------------------------------------
PJ15880 BE Incorrect code may be generated when a conditional
expression is logically negated and used as the test
expression within an if statement.
-------------------------------------------------------------------------------
PJ15894 BE The conversion from a segmented pointer to a flat pointer
may not occur if the _Seg16 pointer is cast to an int.
-------------------------------------------------------------------------------
PJ15935 BE Fixes a register assigning problem which could cause
a run-time trap when calling a function via a pointer.
-------------------------------------------------------------------------------
PJ16023 BE Fixes a problem where compiling with /Ti+ causes the
compiler to create a huge temporary file.
-------------------------------------------------------------------------------
PJ15986 BE A problem occurring while trying to optimize the usage
of registers could result in incorrect code generation.
-------------------------------------------------------------------------------
PJ15883 BE In rare cases, the generated code for the builtin version
of strcmp could be incorrect when one of it's parameters
is a function.
-------------------------------------------------------------------------------
PJ15993 BE Consecutive / and % operators with identical operands
inside simple loops could be compiled incorrectly.
-------------------------------------------------------------------------------
PJ15869 BE Compiling an "if" that contains a negated ternary
expression could cause a compile-time trap.
-------------------------------------------------------------------------------
QUAL-IMP BE Using #pragma alloc_text() to place a function in the
default code segment (CODE32) may result in a run-time
exception since two CODE32 segments may be created.
-------------------------------------------------------------------------------
PJ15872 BE Fixed an internal problem that could cause a compile-time
trap when compiling an simple "if" containing the logical
negation of a floating-point variable.
-------------------------------------------------------------------------------
QUAL-IMP BE Incorrect debug information generated which could cause
IPMD to fail.
-------------------------------------------------------------------------------
QUAL-IMP BE When using the /Gt option, static arrays of the same
type could be mapped on top of each other in rare cases.
-------------------------------------------------------------------------------
PJ16038 BE Fixes a register assigner bug that could cause incorrect
register spills/reloads of 8 or 16 bit values.
-------------------------------------------------------------------------------
PJ15870 BE In rare cases, the code generated for the builtin version
of memchr could be incorrect when using the /G5 option.
-------------------------------------------------------------------------------
PJ15994 BE Instruction scheduling could cause code containing
consecutive memsets to fail.
-------------------------------------------------------------------------------
PJ15996 BE An internal problem occurring during loop unrolling
could result in a compile-time exception.
-------------------------------------------------------------------------------
PJ15933 BE An illegal MOV instruction could be generated when
converting a 32-bit value to an 8-bit value.
-------------------------------------------------------------------------------
PJ15934 BE An internal problem occurring while handling floating-point
parameters in registers could cause a compile-time trap.
-------------------------------------------------------------------------------
PJ16313 BE Incorrect code may be generated when converting an integer
value to a floating-point value if the integer variable is
used after the conversion.
-------------------------------------------------------------------------------
PJ16037 C++FE In some rare cases, compiler might corrupt identifier
CFE names that are also macro names not eligible for macro
expansion.
e.g., #define max(a,b) (((a) > (b)) ? (a) : (b))
int max;
| -> max here could be corrupted
-------------------------------------------------------------------------------
QUAL-IMP CFE Compiler is not generating correct code for the side
effect in the following 'if' statement:
if (*++p == '-0' && !1) ;
'p' does not get incremented as expected.
-------------------------------------------------------------------------------
QUAL-IMP CFE Compiler is not correctly recognizing that statements in a
'switch' before any 'case' or 'default' are unreachable.
-------------------------------------------------------------------------------
PJ15888 CFE Declaration of function returning pointer to array of
unsigned int without 'int' specifier is misinterpreted.
i.e., (*foo())-┘ {}
causes the compiler to generate erroneous error message.
It should be accepted in the same way as:
int (*foo())-┘ {}
-------------------------------------------------------------------------------
PJ15887 CFE Compiler incorrectly issues error message for the
following correct code segment:
char * const kpz;
kpz[0] = '-0';
-------------------------------------------------------------------------------
QUAL-IMP CFE Compiler hangs when compiling source code with comment on
the last line and the comment exceeds the right margin.
-------------------------------------------------------------------------------
PJ16029 CFE Calling from 16 bit to 32 bit, and passing a pointer does
not result in the pointer being automatically thunked.
-------------------------------------------------------------------------------
PJ16028 CFE When ICC is invoked to compile a large number of files in
a command line or a response file, ICC fails with message
"Severe Error: Unable to retrieve messages from message
file."
-------------------------------------------------------------------------------
PJ16027 CRT If the result from internal function called by strtod()
would cause underflow exception, it is rounded to zero,
with proper error signaling.
-------------------------------------------------------------------------------
PJ15886 CRT strdup() allocates memory with malloc(), so it cannot be
freed in a program that was compiled with /Gt+. Changes
to the heap algorithm now permit any type of memory
(normal, tiled, or debug) to be passed to any kind of
free() or realloc() function. In the case of realloc(),
the resulting memory will be of the same type as the
original.
-------------------------------------------------------------------------------
PJ15885 CRT _LHUGE_VAL is a macro that is defined in math.h as being a
reference to an external variable. The variable was not
being exported from the library DLL. This has been
corrected.
-------------------------------------------------------------------------------
PJ15884 CRT Floating point number formatting has been changed to
better handle any precision for floating point numbers.
-------------------------------------------------------------------------------
PJ16026 CRT tmpnam() used to produce the same name in the first, tenth
hundreth call. It is guaranteed that it will now make
TMP_MAX unique names.
-------------------------------------------------------------------------------
PJ16273 CRT getcwd() and getdcwd() library functions will fail on
OS/2 Warp if the caller does not specify a buffer.
-------------------------------------------------------------------------------
PJ16025 BE In case of running out of file handles, tempnam() will
increase the number of allowable file handles and try
again.
-------------------------------------------------------------------------------
QUAL-IMP DLLRNAME DLLRNAME may not be able to handle renaming DDE4SBS.DLL
in the current directory.
-------------------------------------------------------------------------------
PJ16030 DLLRNAME Attempting to rename a DLL in another directory with DLLRNAME
results in the renamed DLL being left in the current
directory.
-------------------------------------------------------------------------------
PJ16031 CPPFILT CPPFILT has been modified so that it doesn't use CMD.EXE
to invoke a sub-program.
-------------------------------------------------------------------------------
PJ16057 C++FE The compiler was issuing an incorrect error for the
conversion of a pointer to a pointer to member of
the same type.
-------------------------------------------------------------------------------
PJ16083 C++FE The compiler was generating an error for a user
defined postfix increment operator for an enum.
-------------------------------------------------------------------------------
PJ16055 C++FE The value oxFFFFFFFF was not being accepted as a valid
enum value. It's size was also being set to the wrong
size.
-------------------------------------------------------------------------------
QUAL-IMP C++FE Mysterious external variables ___nnn being generated with
the /O+ compile option.
-------------------------------------------------------------------------------
PJ16056 C++FE #pragma export of an overloaded const and non-const
function was generating an error, and only one function
was being exported.
-------------------------------------------------------------------------------
QUAL-IMP C++FE New "#pragma defineonly" to match the AIX C Set++ compiler
-------------------------------------------------------------------------------
PJ15905 C++FE The compiler was trapping when it tried to issue an error
message for the invalid use of extern "C++" as a function
parameter.
-------------------------------------------------------------------------------
PJ15930 C++FE The compiler displayed 65536 as the column number when the
source file is a precompiled header file. This cause a
problem when trying to invoke an editor automatically under
the WorkFrame. The fix is to display 1 as the column
number when the source file is a precompiled header.
-------------------------------------------------------------------------------
PJ15931 C++FE In an array of dimension N containing pointers to member,
and with M initializers where M < N, the remaining N-M
members should be initialized to zero. Instead, they were
being left uninitalized and the first N-M were being
zeroed.
-------------------------------------------------------------------------------
PJ16032 C++FE Fixed problem with accessing base classes in hierarchies
containing virtual base classes.
-------------------------------------------------------------------------------
PJ16275 C++FE In some cases, temporary objects were being destructed
twice. In some other cases, objects caught in a catch
clause were not being destructed at all.
-------------------------------------------------------------------------------
QUAL-IMP Samples PMLINES sample program in SAMPLE1A used the WinPeekMsg()
API incorrectly, causing the sample to fail on OS/2 Warp.
===============================================================================
CTC0010 is informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-------------------------------------------------------------------------------
PJ14307 BE A dangling assignment to a floating point parameter inside
a function can cause a floating point stack overflow if
called often enough
-------------------------------------------------------------------------------
PJ14318 BE This fix will correct a boundary problem that occurs when
compiling with option /Gt+ if your program contains static
data objects exactly equal to 64K in size. The problem
does not occur when option /Gt- is specified.
-------------------------------------------------------------------------------
PJ14309 BE Fixed a register problem that may occur when using _alloca
with optimization.
-------------------------------------------------------------------------------
PJ14310 BE A floating-point parameter for a function call could be
set up incorrectly if the call is the last operation in a
function (the tail call optimization).
-------------------------------------------------------------------------------
PJ14311 BE Storing a char into an int and then later storing the int
back into the char could, in very rare circumstances,
produce incorrect code.
-------------------------------------------------------------------------------
PJ14312 BE Nested for loops in which the iteration variables are
members of the same structure may cause incorrect code
generation.
-------------------------------------------------------------------------------
PJ14313 BE Floating-point parameters may be left on the NPX register
stack if there is an "if {...}" immediately above a "for
(;;)" loop near the start of a function. This can later
result in a floating point stack overflow exception.
-------------------------------------------------------------------------------
PJ14314 BE An internal problem could result in a compile-time
exception when processing a function with floating-point
parameters.
-------------------------------------------------------------------------------
PJ14315 BE Calling a function with two or more similar aggregate
parameters could result in incorrect code generation.
-------------------------------------------------------------------------------
PJ14316 BE Incorrect code could be generated for 16-bit operations
that use the BP register when optimizing code without the
/Op- compile parameter also specified.
-------------------------------------------------------------------------------
PJ14317 BE If a conditional break inside an infinite loop jumps to a
return, static variables used in the loop may not be
correct at the return.
-------------------------------------------------------------------------------
QUAL-IMP BE Accessing an int as a bitfield structure has undefined
behaviour according to the ANSI C standard. However, the
behaviour has been changed so that it is more in line with
"intuitively obvious" behaviour.
-------------------------------------------------------------------------------
PJ14424 BE In very rare circumstances, incorrect code may be
generated when the only use of a parameter is a copy to a
local variable.
-------------------------------------------------------------------------------
QUAL-IMP BE Division and remainder operations that conditionally
execute within a loop could be moved outside of the loop,
perhaps causing unexpected divide-by-zero exceptions. (a
result of the invariant code motion optimizations)
-------------------------------------------------------------------------------
PJ14579 BE Under rare circumstances, due to an internal problem,
compiling a large C++ module with /O+ /Ti+ can cause a
compile-time exception.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The compiler was not restricting the change of char to
signed or unsigned char during integral promotions only.
They are three distinct types.
Note: This fix may cause code that previously compiled
cleanly to produce errors. It is simply the compiler
detecting an error that it wasn't detecting previously.
-------------------------------------------------------------------------------
PJ14428 C++FE When a variable is initialized , any temporaries that are
created in the initializer expression should have their
destruction delayed until the end of the block. For a
reference variable to a ternary expression this is not the
case and the destructors are being called too soon.
-------------------------------------------------------------------------------
PJ14431 C++FE Compiler traps while generating a message for an
inaccessible constant expression in a switch statement.
-------------------------------------------------------------------------------
QUAL-IMP C++FE Compiler may trap when generating the error message
EDC3004: "{" statement is not allowed in this scope.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The compiler issues an invalid error message for an
unrecognized type when the symbol is actually a template
argument T.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The compiler generates an error when trying to pass a
array argument to a class template that takes a char *
arg.
-------------------------------------------------------------------------------
QUAL-IMP C++FE A declaration without a type specification causes the C++
compiler front end to trap when generating an error
message.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The C++ compiler front end traps when compiling a
statement of the form:
<function typedef> <_Optlink specifier> <function name>
(<empty argument list>)
-------------------------------------------------------------------------------
PJ14433 C++FE The C++ compiler is restricting the use of:
#pragma comment(user,"..")
It can only occur once in a source file and must appear
before any C++ statements.
-------------------------------------------------------------------------------
PJ14434 C++FE The compiler is not generating a temp when passing an
array to a function that takes a const char * const &
argument. This results in a bad address being passed to
the function.
-------------------------------------------------------------------------------
QUAL-IMP C++FE When a nested type that is a typedef is used as a base
class the compiler checks the access of the target of the
typedef instead of the typedef name and an invalid access
error is generated.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The C++ language specifies that for non-member operator
functions, at least one of the arguments must be of class
type, reference to class, enum type, or reference to enum.
The compiler is generating an error for the definition of
a operator + function that takes an enum and an int as
parameters.
-------------------------------------------------------------------------------
QUAL-IMP C++FE Initialization of static reference variables is happening
at runtime static initialization instead of at compile
time.
-------------------------------------------------------------------------------
PJ14445 C++FE The preprocessor may generate the invalid error:
"The suffix for the floating point constant is not
valid."
when concatenating two valid tokens together to form a
floating point constant.
-------------------------------------------------------------------------------
QUAL-IMP C++RT A program that supplies its own version of delete may have
had the compiler supplied version called instead of the
user version when linking dynamically.
-------------------------------------------------------------------------------
QUAL-IMP C++RT Fixed problem where a duplicate symbol error was generated
by the linker when a user provided global new() was linked
into a program that also called set_new_handler().
-------------------------------------------------------------------------------
PJ14347 CFE If a variable is first declared as 'static' variable in
file scope, then declaration of the same variable name in
function scope should refer to the same variable. This
linkage of identifiers does not work properly when /Ti+ is
not specified.
-------------------------------------------------------------------------------
PJ14346 CFE Compiler generated segmented to flat pointer conversion is
missing for the following code segment:
char * fp;
unsigned long l = 0;
fp = l < 0
? 0
: (char* _Seg16)(void*)(void* _Seg16)l;
-------------------------------------------------------------------------------
PJ14343 CFE Compiler internal error occurs compiling unusually large
program with optimization turned on.
-------------------------------------------------------------------------------
PJ14345 CFE #pragma margins and /Sg options causes erroneous /Wppc
info message when the line ends at the right margin.
-------------------------------------------------------------------------------
PJ14325 CFE After Invoking the compiler from a network drive with
preload (/Tl) enabled, the network drive stays locked.
-------------------------------------------------------------------------------
PJ14329 CFE In macro expansion, preprocessor mistreats two dots
followed by any character as an elipsis.
#define test left..right
test is expanded to left..ight
-------------------------------------------------------------------------------
QUAL-IMP CFE Some #line directives with file names specified are not
processed properly by the compiler.
-------------------------------------------------------------------------------
QUAL-IMP CFE The compiler is failing to provide a closing double quote
(") on the executable name when calling LINK386. This
does not cause a problem with LINK386.EXE, but could cause
problems with other linkers.
-------------------------------------------------------------------------------
QUAL-IMP CFE When ICC is compiling TEMPINC files, it is possible that
compiling one TEMPINC file will update another one and
make it out of date. ICC needs to loop doing TEMPINC
compiles until all objects are up to date.
-------------------------------------------------------------------------------
PJ14445 CFE The preprocessor erroneous issues an error message for the
following legal macro expansion:
#define MAKEHEX(a) 0x##a
float j = MAKEHEX(2e);
-------------------------------------------------------------------------------
PJ14454 CFE The C compiler generates incorrect code when evaluating
the address of an array of array of structure members
within another structure, with array index of 0.
e.g. for the following structure, the values of
&s2.s1[1][0].j and &s2.s1[1]->j are not evaluated
properly:
struct {
int i;
struct {
int j;
} s1[2][3];
} s2;
-------------------------------------------------------------------------------
PJ14279 CRT getcwd() fails intermittently, returning an OS/2 error.
-------------------------------------------------------------------------------
PJ14281 CRT The spawnx() and execx() families of functions sometimes
pass a incorrect parameter list to the child process.
-------------------------------------------------------------------------------
PJ14308 CRT When a file is opened for low level I/O in text mode, and
the last character read from the file is a carriage return
('\r'), the _read() function moves the file pointer back
by 1. This causes incorrect results only if the next
operation on the file is _write() or _tell().
-------------------------------------------------------------------------------
PJ14456 CRT The TZ variable in the environment does not support
timezones which are not an integral number of hours
different from GMT. The format of the TZ variable has
been changed to support this now. The format is now:
SSS[+|-]hh[:mm[:ss]]DDD[,sm,sw,st,em,ew,ed,et,shift]
[] indicates optional parameters.
Note the addition of the minutes and seconds to the
offset.
-------------------------------------------------------------------------------
PJ14455 CRT On OS/2 2.11, the DosKillThread API cannot kill C library
routines that get input from the keyboard. This works on
OS/2 2.0 and 2.1, although it has unpredictable side
effects. The library has been changed to allow this
particular use of DosKillThread() to work safely on OS/2
2.11. Using the DosKillThread() API still has
unpredictable side effects on OS/2 2.0 and 2.1 (an OS
limitation).
-------------------------------------------------------------------------------
QUAL-IMP SCL A bug in ostrstream causes program to trap. The actual
bug is inside streambuf's sync(). It tries to put the end
of line character into an empty stream buffer.
-------------------------------------------------------------------------------
PJ14427 SCL Memory is allocated by the iostream library during static
initialization, but is not being freed during termination.
This causes a memory leak if the iostream functions are
statically linked to a DLL which is dynamically loaded and
unloaded.
-------------------------------------------------------------------------------
=========================================================================
CTC0009 is formal Corrective Service
The following fixes are provided in Compiler CS CTC0009
**************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
--------------------------------------------------------------------------
PJ13703 CFE Defining the first token in a program as
a character string with the /D option
causes an internal compiler error
--------------------------------------------------------------------------
QUAL-IMP CFE Label not found message does not
indicate which label is not found.
--------------------------------------------------------------------------
QUAL-IMP CFE Internal compiler error while generating
/Wenu messages for program with 'case'
statement outside 'switch' scope.
--------------------------------------------------------------------------
PJ13705 BE Fixed a parameter passing problem that
occurs when the last statement of a
function is to a _Pascal function.
--------------------------------------------------------------------------
QUAL-IMP BE Allow the optimizer to assign registers
a little more efficiently in certain
circumstances.
--------------------------------------------------------------------------
PJ13706 BE A loop that contains a goto to a return
could, in rare cases, cause incorrect
code generation.
--------------------------------------------------------------------------
PJ12329 CRT A 16-bit function will get a protection
exception if the function has a large
automatic storage area. This problem
occurs on secondary threads, and happens
because the stack is not committed when
the thread begins execution and the
16-bit code does not have stack probes.
The compiler runtime code that sets up
the 16bit stack needs to commit it.
--------------------------------------------------------------------------
PJ13704 CRT Compiling 16-32 callback funtions with
static link results in duplicate references
when linking.
Reference APAR PJ12507
--------------------------------------------------------------------------
QUAL-IMP CRT Now checking if a destructor exists
during error recovery in __vec__copy().
May have caused traps
=========================================================================
CTC0008 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0008
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ12307 BE Cannot access local variables of callback
functions within the Debugger.
-------------------------------------------------------------------------
PJ12325 BE Incorrect code may be generated for a
conditional increment or decrement if the
comparison is signed.
-------------------------------------------------------------------------
PJ12340 BE The conversion of an address to a segmented
address may be incorrectly done if the
address involves an index calculation
(ie: &array{i-1})
-------------------------------------------------------------------------
PJ12341 BE A register used by strncat() could be
clobbered under rare circumstances and
cause incorrect behaviour.
-------------------------------------------------------------------------
PJ12376 BE Fixed an internal problem with the handling
of conditional increments with side effects.
-------------------------------------------------------------------------
PJ12431 BE Incorrect register selection could cause
incorrect results when performing a bitwise
AND (&) with a constant.
-------------------------------------------------------------------------
PJ12507 BE & CRT Compiling 16 to 32 callback functions with
/Gh+ causes a run-time trap.
-------------------------------------------------------------------------
QUAL-IMP BE Incorrect register selection could lead to
traps or unexpected results with 32 to 16 to
16 to 32 code.
-------------------------------------------------------------------------
QUAL-IMP BE Fixed a problem similarto PJ11975 for
conditional decrements.
-------------------------------------------------------------------------
PJ12567 CRT Exception handler was not deregistered within
heap_check when using /TM+
-------------------------------------------------------------------------
PJ12326 CFE If listing is enabled (/Ls, /Li, or /Lj) and
the source code contains nested #if, #elif
and #ifdef, the compiler might fail with
unexpected compiler error.
-------------------------------------------------------------------------
PJ12327 CFE & C++FE After compiling programs with preload turned
on, sometimes the front-end traps after the
compilation is completed.
-------------------------------------------------------------------------
PJ12477 CFE The compiler was not checking against
possible errors reading the source and
header files.
-------------------------------------------------------------------------
PJ12490 CFE ICC will be changed to ignore /Si+ option
when /Fb+ option is specified.
-------------------------------------------------------------------------
QUAL-IMP CFE Pre-load program was not checking the return
codes from some API calls.
-------------------------------------------------------------------------
QUAL-IMP CFE If the compiler is first invoked from a
directory with preload option enabled, while
the compiler stays loaded, the user is
prevented from removing the directory.
This is inconvenient for the user.
-------------------------------------------------------------------------
QUAL-IMP CFE Compiling program with function calls with
very large number of arguments causes
compiler to trap.
-------------------------------------------------------------------------
PJ12378 C++FE If a class is _Exported, then a member
function is subsequently defined to be
"inline", the compiler still tells the linker
to export the function. This causes an
"undefined external" linker error.
-------------------------------------------------------------------------
PJ12388 C++FE A C++ program compiled with optimization
will cause the front-end to trap if a "const
int" static class data member is referenced
with explicit class qualification.
-------------------------------------------------------------------------
PJ12427 C++FE Erroneous conversion error between typedefs,
friend functions and the use of the friend
function.
-------------------------------------------------------------------------
PJ12445 C++FE Compiler trap processing declaration of const
var symbol previously used without being
declared.
-------------------------------------------------------------------------
PJ12479 C++FE Preprocessor trap when processing a macro
defined to NULL
-------------------------------------------------------------------------
PJ12492 C++FE When one anonymous union is nested inside
another in a C++ program, incorrect addresses
are generated for the union members.
-------------------------------------------------------------------------
QUAL-IMP C++FE Fixed #pragma page() and #pragma skip() so
that a listing file will not be generated if
the listing option is not activated on the
command line.
-------------------------------------------------------------------------
QUAL-IMP C++FE If the argument list of a macro is supplied
via another macro, the macro might not be
expanded as expected.
Note: Corresponding CFE fix was implemented
in CTC0006 as PJ11929
-------------------------------------------------------------------------
QUAL-IMP C++FE Wrapper <demangle.h> with #pragma pack
-------------------------------------------------------------------------
PJ12328 UTIL When a new C Set++ project (ie. no compiler
options have been set), is invoked under the
build action on the WorkFrame, the compiler
DLL will return the default action. The
default action is not to generate any .W
files.
-------------------------------------------------------------------------
PJ12522 UTIL Munch was giving the error "assert
<line_number> invalid object record." This
error was incorrectly being produced for
valid object record formats.
=========================================================================
CTC0007 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0007 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ11951 BE & CFE The optimizer misses a chance to inline
certain C++ functions.
-------------------------------------------------------------------------
PJ11979 CFE In source code:
int main (void) {
int a, b; b = 1; a = 2; return 0;
}
The symbols for a and b are generated in a
different order depending on whether /Ti is
on. They should be generated in the same
way no matter what the /Ti setting is.
-------------------------------------------------------------------------
QUAL-IMP CFE When /La compiler option is used, some of the
structures and unions are incorrectly shown
in the listing
-------------------------------------------------------------------------
PJ12108 CRT Library fixes made to solve problems when
debug allocated objects were freed with
non-debug routines and vice-versa.
In addition the environment variable
DDE4_HEAP_SKIP was added whereby the user can
skip the _heap_check that occur when debug
routines are invoked. The syntax is as
follows:
set DDE4_HEAP_SKIP=increment,starting
where: 'increment' is how often a
heap_check will be invoked, and 'starting'
(which is optional) is how many calls to
debug memory routines must occur before
heap_checks are done.
Example: DDE4_HEAP_SKIP=100,1000
will perform a heap_check after 1000 debug
memory routines have been called and on every
100 calls after that.
Example: DDE4_HEAP_SKIP=50
will perform a heap_check on every 50 calls
made to a debug memory routine
Note: If DDE4_HEAP_SKIP is not set in the
environment then the default will be to
invoke heap_check on every call to a debug
memory routine.
=========================================================================
CTC0006 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0006 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ11896 BE Optimization Problem: A for loop that
functions like a memcpy() could be
incorrectly optimized if the source of the
copy is a struct member.
-------------------------------------------------------------------------
PJ11952 BE Optimization Problem: An internal problem
with expression simplification could result
in incorrect code generation.
-------------------------------------------------------------------------
PJ11953 BE Optimization Problem: Within an inner switch
of nested switches, a goto jumping to a break
for the outer switch could be turned into a
break for the inner switch.
-------------------------------------------------------------------------
PJ11975 BE Optimization Problem: Statements of the form:
"if (f1 < f2) i++", where f1 and f1 have
floating-point datatypes, could cause a
compile-time exception in the BE.
-------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: MOD operations could
generate results of the wrong sign if both
operands are negative. Similar results could
occur for MOD and DIV by a negative power of
2.
-------------------------------------------------------------------------
QUAL-IMP BE Fixed a small problem with the generated
assembler listing file - an incorrect symbol
could be used.
-------------------------------------------------------------------------
PJ11872 C++FE Fixed a trap in the C++ frontend. The trap
occurred when we tried to compile a source
file that contained a class that had 2
declarations of the same friend function and
a typedef for that function.
-------------------------------------------------------------------------
PJ11887 C++FE Fixed a trap when compiling code with a
definition of a function with _Far16 _Pascal
linkage.
-------------------------------------------------------------------------
PJ11981 C++FE If a conversion function yields a reference
to a class with constructors, and a temporary
is built from the result of that conversion,
the temporary is initialized by bitwise
copying instead of by calling its copy
constructor.
-------------------------------------------------------------------------
PJ11982 C++FE The compiler will deliberately not inline
some functions if doing so would break C++
exception handling. However, when exception
handling is disabled by /Gx+, the compiler
still fails to inline those functions.
-------------------------------------------------------------------------
PJ11983 C++FE A complex expression containing more than one
conditional subexpression (i.e. the x ? y :
z construct) may be generated such that the
subexpressions are evaluated in the wrong
order.
-------------------------------------------------------------------------
PJ11984 C++FE An inline function consisting of a single
return statement that returns a
type-converted parameter may be incorrectly
inlined.
-------------------------------------------------------------------------
PJ11881 CFE Sizeof typedef within sizeof sometimes
returns arbitrary value.
-------------------------------------------------------------------------
PJ11929 CFE If the argument list of a macro is supplied
via another macro, the macro might not be
expanded as expected.
-------------------------------------------------------------------------
PJ11889 CRT If the function that executes when a thread
begins execution calls 16-bit code, then
EDCThunkProlog is called from within the
function prolog. EDCThunkProlog tries to
access data that is outside the stack frame,
and since this is the first frame on the
stack, that storage is not allocated to the
stack. A protection exception occurs.
=========================================================================
CTC0005 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0005 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11625 BE Optimization Problem: Compiling source that
contains floating-point code could cause a
compile-time trap in the backend.
------------------------------------------------------------------------
PJ11688 BE Optimization Problem: Statements of the form
"do { i++; } while (condition); i--;" could
be incorrectly optimized.
------------------------------------------------------------------------
PJ11692 BE Incorrect debug info could be generated for a
data member of a class with type "char *
const".
------------------------------------------------------------------------
PJ11695 BE Optimization Problem: Instruction scheduling
could clobber the result of constant multiply
across a call.
------------------------------------------------------------------------
PJ11696 BE Optimization Problem: Using an int variable
as an array of chars within a loop could
result in incorrect code generation.
------------------------------------------------------------------------
PJ11697 BE Optimization Problem: Statements of the form
"while (cond) { if (--i) { i++; break; } }"
could be incorrectly optimized.
------------------------------------------------------------------------
PJ11698 BE Optimization Problem: If the "count" paramter
of strncat() is a builtin string function,
incorrect code could be generated.
------------------------------------------------------------------------
PJ11699 BE Optimization Problem: Tail calling a _Pascal
function from another function could result
in an exception at run-time.
------------------------------------------------------------------------
PJ11701 BE strncat() could copy one byte even if "count"
parameter is a variable of value 0.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Adding two negative
numbers and then negating the result could be
optimized incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE Without optimization, an expression of the
form "*((char*)&array[index]+i)" could
generate an incorrect OBJ even though the
ASM is correct.
------------------------------------------------------------------------
PJ11491 C++FE new() is not returning a valid pointer when
allocating a 0-sized array.
------------------------------------------------------------------------
PJ11492 C++FE The delete() operator for an object was not
being called with the debug parameters when
that object was being deleted because its
constructor threw an exception.
------------------------------------------------------------------------
PJ11574 C++FE Reduce the long link times and large swapper
file created when linking C++ programs that
contain templates.
------------------------------------------------------------------------
PJ11575 C++FE If a virtual base class appears more than
once in the class hierarchy, then one copy of
if may be initialized several times and the
other copies not initialized.
------------------------------------------------------------------------
PJ11584 C++FE The compiler may crash when generating debug
information for a class that has no
user-supplied nor compiler-generated inline
functions. This is rare, since there are
usually some compiler-generated ones.
------------------------------------------------------------------------
PJ11585 C++FE If a C++ compilation includes definitions of
classes that contain virtual functions, all
of which are inline functions, the compiler
will generate those classes and functions
whether or not they are actually used. This
fix generates them only when necessary
------------------------------------------------------------------------
QUAL-IMP C++FE A C++ program containing a brace-enclosed
statement block outside of a function body
crashes the front-end when compiled with
/Wuse+ if there is an unused label define
in the block
------------------------------------------------------------------------
QUAL-IMP C++FE A goto within a catch block is incorrectly
diagnosed as a jump into the catch block,
which is illegal since it bypasses
initialization of the catch variable
------------------------------------------------------------------------
QUAL-IMP C++RT Fixed memory leak that occurred when memory
is allocated for an object however, it is not
constructed because it's constructor threw an
exception.
------------------------------------------------------------------------
PJ11702 CFE The compiler is not recognizing a constant
expression properly when initialization
involves an array within a structure within
an array of structures
------------------------------------------------------------------------
PJ11703 CFE Using CSD 1 of C Set ++, the test case is
expected to have a warning message, but the
compiler should not be trapping.
------------------------------------------------------------------------
PJ11686 CRT The problem lies in reading across memory
blocks. The code did not take into account
of the number of characters read in from the
previous blocks and hence reading more than
necessary.
------------------------------------------------------------------------
PJ11687 CRT AL register will now be set by the library
when making a call to DosGetMessage.
=========================================================================
CTC0004 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0004 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11127 BE Optimization Problem: Multiplying a variable
by a constant and the adding or subtracting 1
could result in incorrect code generation.
------------------------------------------------------------------------
PJ11128 BE Optimization Problem: An internal problem
could result in traps or unexpected results
with 32 to 16 or 16 to 32 code.
------------------------------------------------------------------------
PJ11129 BE Optimization Problem: In rare circumstances,
doing arithmetic with shorts could result in
traps or unexpected results.
------------------------------------------------------------------------
PJ11134 BE Optimization Problem: The result of a right
shift of a negative value, though
implementation defined, could differ at /O-
and /O+.
------------------------------------------------------------------------
PJ11135 BE Optimization Problem: The backend could abort
with fatal error EDC4005 in intermediate file
ROOPT when optimizing an if-then-else.
------------------------------------------------------------------------
PJ11137 BE Optimization Problem: Expressions of the
form: "*(float *) &var", where var is an int,
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11138 BE Optimization Problem: An internal problem
occuring when compiling floating-point code
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11139 BE Incorrect code could be generated when
negating a char variable and then storing the
result into an int variable.
------------------------------------------------------------------------
PJ11140 BE Optimization Problem: Statements of the form:
"x--; if (cond) x += 2;" may be incorrectly
optimized.
------------------------------------------------------------------------
PJ11141 BE Run-time traps could occur in code using 16
to 32 callback functions if the code crossed
a 64K boundary.
------------------------------------------------------------------------
PJ11142 BE When using strncat(), an extra NULL was being
appended to the end of the destination string
if the length of the source string was less
than "n".
------------------------------------------------------------------------
PJ11143 BE Optimization Problem: Statements of the form:
"if (!x) {y = 0;} else {y = 1;}" could cause
a compile-time trap if x is a float-point
type.
------------------------------------------------------------------------
QUAL-IMP BE Under certain conditions, the optimizer could
leave around some useless LEA instructions.
This has now been fixed.
------------------------------------------------------------------------
QUAL-IMP BE When exporting callback functions, an
incorrect symbol could be used, resulting in
link errors.
------------------------------------------------------------------------
PJ11176 CFE Compiler generates incorrect code for
referencing array of array in structure
with array index of 0.
ie: a.b[i][0].c = 1; a.b[i]->c = 2;
------------------------------------------------------------------------
PJ11177 CFE If a variable is first declared and then
initialized both with a typedef type and
a qualifier, the compiler generates incorrect
code.
ie: const typedef_name var;
const typedef_name var = 0;
------------------------------------------------------------------------
PJ11179 CFE When initializing a member of a structure
casting the member to _Seg16 pointer causes
unexpected compiler error.
------------------------------------------------------------------------
PJ11180 CFE When #pragma handler is specified for some
functions, the compiler randomly generates
incorrect code that exports some of those
functions.
------------------------------------------------------------------------
PJ11181 C++FE The following message is produced when both
sides of a conditional expression are the
same:
recoverable EDC4005: Error occured in
intermediate file RBEXPR(4902)
------------------------------------------------------------------------
PJ11182 C++FE An initialized function-scope static variable
will cause the C++ front end to GPF if a
compiler temporary is required when
evaluating the initializing expression.
------------------------------------------------------------------------
PJ11183 CRT FILE struct members violate user name space.
------------------------------------------------------------------------
PJ11185 CRT MATHERR not handling domain errors.
=========================================================================
CTC0003 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0003 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10704 BE Incorrect debug information could cause IPMD
to trap in DDE4BE32.DLL while debugging C++
programs.
------------------------------------------------------------------------
PJ10705 BE Incorrect debug information for const member
functions could cause expression evaluation
problems in IPMD.
------------------------------------------------------------------------
PJ10706 BE Incorrect debug information could cause IPMD
to hang when debugging large programs.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect debug information could confuse
IPMD while debugging C++ programs.
------------------------------------------------------------------------
PJ10461 CRT Serialization code used in the runtime
library may cause system traps. This
usually occurs when one of the thread
unexpectedly terminates.
------------------------------------------------------------------------
PJ10703 C++RTL CPPFILT utility truncates the mangled
function names if it is greater than 233
characters.
=========================================================================
CTC0002 is formal Corrective Service
The following fixes are provided in Compiler CS CTC0002 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10544 BE Optimization Problem: Compiling with /G5 /Ms
may optimize SUB ESP,4 into PUSH EAX at
inappropriate places.
------------------------------------------------------------------------
PJ10545 BE Incorrect code may be generated when copying
structures whose size is less than 12 bytes.
------------------------------------------------------------------------
PJ10546 BE Optimization Problem: An internal problem
during common subexpression elimination could
cause a compile-time exception.
------------------------------------------------------------------------
PJ10547 BE Optimization Problem: Incorrect code
generation may result when optimizing a loop
that contains a goto which acts like a break.
------------------------------------------------------------------------
PJ10549 BE Optimization Problem: Instruction scheduling
may move instructions out of the protected
area between _disable and _enable.
------------------------------------------------------------------------
PJ10550 BE Optimization Problem: Returning a floating
point value as an integer may cause problems
on machines without FP co-processors when
compiled with /O and either /G4 or /G5.
------------------------------------------------------------------------
PJ10552 BE The enum data offset field of a COMDAT placed
in a user segment was being set to a non-zero
value.
------------------------------------------------------------------------
PJ10553 BE Optimization Problem: An internal problem
could cause a compile-time trap when
compiling with /O+ /Gf+.
------------------------------------------------------------------------
PJ10556 BE The BE was not growing the number of file
handles available. This caused a
compile-time exception when the BE ran out of
file handles.
------------------------------------------------------------------------
PJ10557 BE Optimization Problem: Calling a 32-bit
function from the last statement of a _Far16
_Pascal function could be compiled
incorrectly.
------------------------------------------------------------------------
PJ10558 BE Optimization Problem: The incorrect register
may be cleared when returning 0.
------------------------------------------------------------------------
PJ10559 BE A constant left-shifted by another constant
may be folded incorrectly when compiled with
/Gi.
------------------------------------------------------------------------
PJ10560 BE Optimization Problem: Tail call optimization
was being incorrectly applied to a call to a
pascal linkage function from a system linkage
function.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Bad register selection
around switch statements could cause
incorrect code generation.
------------------------------------------------------------------------
QUAL-IMP BE With C++, returning a complex structure from
a function whose destructor has been inlined
could be compiled incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE An internal problem could cause a
compile-time trap when compiling, with /Gr
/Rn, a _Far32 _Pascal function that returns a
pointer.
------------------------------------------------------------------------
PJ10478 CFE The preprocessor was getting an internal
compiler error for certain macro expansion.
------------------------------------------------------------------------
PJ10477 CFE If a source/header file contains null
characters, the compiler gets an internal
compiler error and may result in a huge
swapper that may bring down your system.
------------------------------------------------------------------------
QUAL-IMP CFE Error message was being erroneously issued
when '_Export" keyword or '#pragma export'
are specified more than once for the same
object.
------------------------------------------------------------------------
PJ10566 C++FE Conversion function results in an
unconstructed temporary. No constructor was
called for the temporary object.
------------------------------------------------------------------------
PJ10567 C++FE When passing a class as a by value parameter
a temporary is not used and the class is
passed by reference.
------------------------------------------------------------------------
PJ10568 C++FE Member friend incorrectly inherits function
linkage from linkage specifier.
------------------------------------------------------------------------
PJ10569 C++FE Invalid Error message EDC3458 produced.
------------------------------------------------------------------------
PJ10570 C++FE GPF calling virtual member function of a
template class when the module uses #pragma
data_seg.
------------------------------------------------------------------------
PJ10571 C++FE Invalid error for postfix operator ++ on a
reference in a conditional expression.
------------------------------------------------------------------------
PJ10572 C++FE Invalid error message EDC3276 and GPF when
compiling a conditional expression.
------------------------------------------------------------------------
QUAL-IMP C++FE Runtime GPF accessing static data member
at location 0.
------------------------------------------------------------------------
QUAL-IMP C++FE /Ms causes a runtime GPF when exception
handling is used.
------------------------------------------------------------------------
PJ10462 CRT Thunk Prologue incorrectly probes stack
causing system traps. This may occur
with any 32-16 calls not in thread one.
------------------------------------------------------------------------
QUAL-IMP CRT Free not handling debug object. An debug
memory object (as allocated by the debug
memory routine) can cause system trap
after it is passed to the regular free()
function for freeing.
------------------------------------------------------------------------
QUAL-IMP CRT Spawn/Exec family functions should ignore
net error. If the net error is not ignored,
the search on the PATH stops prematurely,
which may cause spawns/exec functions not to
find any program whose path appears
after the net work path causing the error.
------------------------------------------------------------------------
QUAL-IMP UTIL Compiler dialog did not parse a file when the
file contains a '//' comment. It ignored
lines after the '//' character until a blank
line is reached.
------------------------------------------------------------------------
QUAL-IMP UTIL Dialog did not free up memory when saving
or retrieving information to/from the project
file extended attribute.
=========================================================================
CTC0001 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0001 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ09575 DOC Hitting Ctrl H in EPM for contextual help
did not work for printf or scanf. A change
was made in the DDE4CLIB.NDX file..
------------------------------------------------------------------------
QUAL-IMP ICC When /Fa compilation switch was used to
create assembler file, and a template file
was compiled, the compiler trapped.
------------------------------------------------------------------------
QUAL-IMP ICC Added the description of /Tm option to ICC
help.
------------------------------------------------------------------------
PJ09573 FE Fixed the compiler to disallow illegal
initialization of two-dimensional array
of char with character string without braces.
------------------------------------------------------------------------
PJ09574 FE Structure initialization failed with an
extra set of braces.
------------------------------------------------------------------------
QUAL-IMP FE Usage of _Export keyword caused the compiler
to fail.
------------------------------------------------------------------------
QUAL-IMP UTIL Beta project causes Workframe to trap.
------------------------------------------------------------------------
QUAL-IMP UTIL Update English panels to fix a Japanese
VGA screen.
------------------------------------------------------------------------
QUAL-IMP UTIL Remove the minimize capability of the
notebook dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL No keyboard focus when the notebook dialog
first appears.
------------------------------------------------------------------------
QUAL-IMP UTIL Incorrect focus when Alt key is pressed
inside a dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL /Xc should not generate any command line
include paths.
------------------------------------------------------------------------
QUAL-IMP C++FE The /Ms option is changing the linkage of
internally declared compiler functions.
This can result in runtime traps when using
memory management or C++ exception handling.
------------------------------------------------------------------------
QUAL-IMP C++FE The linker fails when using /ND to rename
a data segment. The compiler is generating
bad code for partially initialized
structures.
------------------------------------------------------------------------
QUAL-IMP C++FE Using the compiler options /La or /Lb causes
the compiler to trap.
------------------------------------------------------------------------
PJ09576 C++FE Linking a program that contains templates
causes an invalid error to be generated by
lib.exe. The error is "LIB0007: Error :
Unable to open D:\00900000.6.OBJ"
------------------------------------------------------------------------
PJ09577 C++FE Large program with many template functions,
(more than 1023), traps at runtime.
------------------------------------------------------------------------
PJ09578 C++FE When linking programs that contain templates
and object files that were generated by TASM
the message: "Unknown Record Type {ox..},
offset {..} is generated.
------------------------------------------------------------------------
PJ09579 C++FE The compiler is incorrectly resolving to a
function template instead of using a
previously declared member function.
------------------------------------------------------------------------
PJ09580 C++FE Object destructors are not always run after
a throw statement.
------------------------------------------------------------------------
PJ09581 C++FE Compiling code that uses _Far16 and _Pascal
keywords causes an internal compiler error:
"Exception #C0000005: 30751 occurred in
file .., function .."
------------------------------------------------------------------------
QUAL-IMP C++RT Incorrectly handling exceptions in multiple
runtime environments.
------------------------------------------------------------------------
PJ09568 BE Compiling source files with the same names
may result in conflicting BSS static areas.
------------------------------------------------------------------------
PJ09570 BE Optimization Problem: Incorrect code could be
generated when the result of a comparison is
subtracted from a variable.
------------------------------------------------------------------------
PJ09571 BE The debug info could become corrupted in very
large files which results in only assembler
view being available within IPMD.
------------------------------------------------------------------------
PJ09572 BE Optimization Problem: An internal problem
during loop optimizations could cause a
compile-time exception in the back-end.
------------------------------------------------------------------------
PJ09569 BE Optimization Problem: Incorrect code could be
produced for loops ending with an
if-then-else where the last statement of the
else is a break.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem in
store removal could cause incorrect code.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem
may cause a compile-time exception in the
back-end.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect code generation for _Far16 _Pascal
functions that return floating-point types
could cause a run-time exception.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem,
when compiling with /Ti+, may cause incorrect
code generation for breaks within loops.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: The optimizer was
incorrectly folding (0 / x) and (0 % x).
------------------------------------------------------------------------
QUAL-IMP BE Casting a floating-point value to int and
then comparing the result to another int that
was previously cast from a floating-point
value may produce incorrect results.
========================================================================= |
![]() |
||
IBM C Set++ v. 2.x (13/10/1995, International Business Machines Corporation (IBM)) | Readme/What's new |
This file contains replacements for LINK386.EXE and IMPLIB.EXE. The
version numbers are:
LINK386.EXE 2.01.016
IMPLIB.EXE 2.01.002
To install, back up the installed versions, and replace them with these,
or place these executables on your path ahead of the previously
installed versions.
Problems Fixed:
---------------
- Fail to link with the /L linker option
- Several problems linking C++ modules
Disclaimer:
-----------
These files were created as part of an interim build of the OS/2
operating system, and have not been fully tested. They may fail to
correctly process input which was accepted by earlier versions. Should
this happen, you are advised to install the earlier version. |
![]() |
||
CTM0010 v. 2.0 (Class Libraries Subcomponent of C Set ++, 21/6/1995, International Business Machines Corporation (IBM)) | Readme/What's new |
CTM0010 is a CSD (set of fixes) for the Class Libraries Subcomponent of
C Set ++ for OS/2, Versions 2.1.
All the Class Library CSDs are cumulative, so you only need to apply the
latest one (i.e. the one with the highest number after the CTM prefix).
The CSD must be applied using the provided installation tools.
CSD CTM0010 is an Informal Corrective Service.
Files in this directory:
------------------------
csdfixes.lst - a text file that lists the fixes that are included in this CSD.
You may want to get this file to see what fixes are included
before getting the actual CSD. This file is included in the
ZIP file, so you do not need to get it if you are getting the
ZIP file.
ctm0010.zip - contains the CSD.
readme.txt - this file
Instructions:
-------------
Get the ZIP file in binary mode.
Unpack the ZIP file into a clean directory.
Install using the provided SERVICE.EXE program.
Contact:
--------
If you have any questions about these files, please contact
cset2@vnet.ibm.com.
C Set ++ Class Libraries Version 2.0
Fixes List
------------------------------------
*************************************************************************
* *
* This CSD contains fixes that apply only to C/C++ Tools Version 2.0. *
* Do not attempt to apply it to C Set++ version 2.1 or to C/C++ Tools *
* Version 2.01. *
* *
*************************************************************************
=========================================================================
CTM0010 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTM0010
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP UICL On a copy operation, there is no easy way to obtain
addressibility to the copied object.
-------------------------------------------------------------------------
QUAL-IMP UICL If an IInfoArea is removed as an extension of an
IFrameWindow then during destruction of the
IInfoArea, an exception will be thrown.
-------------------------------------------------------------------------
UICL The INotebook::PageSettings constructors that
accept tab text or a tab bitmap only check for the
major tab style This should be a check for the
major tab and minor tab styles. This bug causes
minor tab pages to also have a major tab when run
on Warp.
-------------------------------------------------------------------------
QUAL-IMP UICL INotebook::setStatusText throws an exception
under OS/2 Warp if the new status text is the
same string as the current status text.
-------------------------------------------------------------------------
QUAL-IMP UICL Button controls do not correctly pick up the
parent background when placed on a canvas that
is the client area for a frame window with a
style of dialogBackground when running on Warp.
-------------------------------------------------------------------------
QUAL-IMP UICL Frame handler doesn't consider disabled Close
system menu item
-------------------------------------------------------------------------
QUAL-IMP UICL Bad minimum size for IBitmapControl with no bitmap
-------------------------------------------------------------------------
QUAL-IMP UICL Delayed file rendering does not work in drag/drop
-------------------------------------------------------------------------
UICL Message file missing exception text.
-------------------------------------------------------------------------
UICL Check/Establish PM environment for IMessageBox
-------------------------------------------------------------------------
QUAL-IMP UICL Frame Extension Repaint problem
-------------------------------------------------------------------------
UICL ISelectHandler incorrectly checking for CRA_SELECTED.
-------------------------------------------------------------------------
QUAL-IMP UICL Passing a null IWindow* to IEvent ctor causes trap
-------------------------------------------------------------------------
UICL IDDETopicServer traps when attempting to create more
than once
-------------------------------------------------------------------------
QUAL-IMP UICL Msgbox help conflicting with system menu help
-------------------------------------------------------------------------
UICL Title text has garbage from IFrame(long text..)
-------------------------------------------------------------------------
QUAL-IMP UICL IAcceletator with NULLHANDLE for owner doen't work.
-------------------------------------------------------------------------
QUAL-IMP UICL Source emphasis incorrect after selecting from popup
submenu.
-------------------------------------------------------------------------
QUAL-IMP UICL Container problems on Warp
-------------------------------------------------------------------------
QUAL-IMP UICL Color problems in canvases, notebook, system wide
color changes.
-------------------------------------------------------------------------
QUAL-IMP UICL Font problems - incorrect font used, incorrect
attributes inherited, incorrect sizing of controls
-------------------------------------------------------------------------
*************************************************************************
CTM0009 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTM0009
***********************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP UICL Removing a tab section in INotebook asserts
the page is a tab.
-------------------------------------------------------------------------
QUAL-IMP UICL Corrected an assertion in
IContainerColumn::dataAsIcon
-------------------------------------------------------------------------
QUAL-IMP UICL IFrameWindow::close traps if messagebox
showing.
-------------------------------------------------------------------------
QUAL-IMP UICL Submenu undo records deleted incorrectly
-------------------------------------------------------------------------
QUAL-IMP UICL IString IMultiLineEdit::text(unsigned long
ILineNumber) const overwrites storage
-------------------------------------------------------------------------
QUAL-IMP UICL WARP problem - no scroll bars on IViewPort
-------------------------------------------------------------------------
UICL Redisgned function, IDMSourceHandler::
resolveRMFConflict, so it will properly handle
multiple source renderers
-------------------------------------------------------------------------
QUAL-IMP UICL Check all functions in all controls where
they are comparing the results of an SendEvent
to a OS/2 #defined value for correct comparison.
-------------------------------------------------------------------------
QUAL-IMP UICL The default push button when in a canvas loses
its default emphasis after tabbing out of it
-------------------------------------------------------------------------
QUAL-IMP UICL When using a font to initialize the font
dialog, the font dialog will take the attributes
of the font instead of the settings for the
font dialog.
-------------------------------------------------------------------------
UICL ISpinButton::setValue does not work under WARP
-------------------------------------------------------------------------
QUAL-IMP UICL IEntryField ctor fails for spin button child
on WARP
-------------------------------------------------------------------------
*************************************************************************
CTM0008 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTM0008
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP CCL Possible memory overlays and stack corruption
when an exception is logged which contains
text longer than 512 characters.
-------------------------------------------------------------------------
QUAL-IMP UICL Auto delete of popup menus can cause pm to
hang.
-------------------------------------------------------------------------
QUAL-IMP UICL IDate::asCDATE transposes month and day.
-------------------------------------------------------------------------
QUAL-IMP UICL IFrameWindow::dismiss can trap if there is
not an owner window.
-------------------------------------------------------------------------
QUAL-IMP UICL Improved static link time from ctm0006
-------------------------------------------------------------------------
QUAL-IMP UICL Ownerdraw IContainerControl title not working
-------------------------------------------------------------------------
QUAL-IMP UICL Popup menus not always deleted timely.
-------------------------------------------------------------------------
QUAL-IMP UICL IColor::value may not work properly if the
user has modified the logical color table.
-------------------------------------------------------------------------
QUAL-IMP UICL Trap creating cascading menus.
-------------------------------------------------------------------------
QUAL-IMP UICL Possible trap on delete of IDDETopicServer.
-------------------------------------------------------------------------
QUAL-IMP UICL IDMHandler::setRenderer doesn't work.
-------------------------------------------------------------------------
QUAL-IMP UICL IContainerObject::isDroponable is ignored by
IDMItemProvider::provideEnterSupport.
-------------------------------------------------------------------------
QUAL-IMP UICL Make IContainerObject instances droponable
by default.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiCellCanvas layout disturbed by clipped
columns.
-------------------------------------------------------------------------
QUAL-IMP UICL ICanvas- Expandable rows and columns expanded
too soon during layout.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiCellCanvas doesn't expand all children
in a column.
-------------------------------------------------------------------------
QUAL-IMP UICL The minimum size of a multi-cell canvas should
not include the width and heights of any
expanded rows or columns.
-------------------------------------------------------------------------
QUAL-IMP UICL IWindow::windowWithId is quirky with primary
windows.
-------------------------------------------------------------------------
QUAL-IMP UICL IHelpSubitemNotFoundEvent::inFrame is wrong.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiLineEdit::hasSelectedText doesn't detect
a single selected character.
-------------------------------------------------------------------------
QUAL-IMP UICL Split ISpinButton into separate text and
numeric controls.
-------------------------------------------------------------------------
*************************************************************************
CTM0007 was skipped does not exist.
*************************************************************************
*************************************************************************
CTM0006 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTM0006
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP UICL Tabbing to and from an IGraphicPushButton on
on a canvas causes it to lose it's graphic.
-------------------------------------------------------------------------
QUAL-IMP UICL The IFrameWindow constructor that wrappers an
existing PM frame window was not calling
setAutoDestroyWindow(false).
-------------------------------------------------------------------------
QUAL-IMP UICL IContainerControl::scroll and
IContainerControl::scrollToObject do not
work correctly in a non-split details view
or in non-details view with details view
columns inserted.
-------------------------------------------------------------------------
QUAL-IMP UICL ICnrMenuHandler does not always indicate the
the correct source of the popup menu.
-------------------------------------------------------------------------
QUAL-IMP UICL Bogus exception from IMenu::cursor when the
menu contains separators.
-------------------------------------------------------------------------
QUAL-IMP UICL IInfoArea goes blank with cascaded menus.
-------------------------------------------------------------------------
QUAL-IMP UICL IListBox::add not throwing an exception
when the listbox is full.
-------------------------------------------------------------------------
QUAL-IMP UICL IGroupBox::calcMinimumSize doesn't account
for the border.
-------------------------------------------------------------------------
QUAL-IMP UICL IContainerControl vertical scrollbar is
disabled at times when it should be enabled.
-------------------------------------------------------------------------
UICL Variability in number of pixels among windows
of the same percentage in a split canvas.
-------------------------------------------------------------------------
QUAL-IMP UICL IWindow::windowWithHandle was being called
within a critical section.
-------------------------------------------------------------------------
QUAL-IMP UICL A canvas (1) without a child window that can
accept the input focus, (2) with different
parent and woner windows, and (3) either
the client window of a frame or owned by
another canvas could cause the system to hang.
A common way to create this situation is to
add an empty canvas to a view port.
-------------------------------------------------------------------------
PJ14628 UICL IMultiCellCanvas could not distinguish
between whether a row or column had been
assigned a height or width of 0 (for example,
to visually delete it), or whether it had
been assiged no height or width. It used the
default cell height and width in both cases.
-------------------------------------------------------------------------
QUAL-IMP UICL If I_NO_INLINES is declared then the size_t
datatype is undefined.
-------------------------------------------------------------------------
QUAL-IMP UICL Reference to non existing function in
itrace.hpp removed.
-------------------------------------------------------------------------
QUAL-IMP UICL setIcon uses caching when loading an icon
and this causes PM to potentially destroy the
icon while it is still being used.
-------------------------------------------------------------------------
QUAL-IMP UICL IFrameWindow::setClient(0) causes a trap.
-------------------------------------------------------------------------
QUAL-IMP UICL The width of entry fields and spin buttons
on a multi-cell or set canvas is too narrow
for small text limits.
-------------------------------------------------------------------------
QUAL-IMP UICL IFrameWindow::color(background) does not
consider the dialog background. If no color
was set it always returns the system window
color.
-------------------------------------------------------------------------
PJ14632 UICL System hang when using a frame window as a
notebook page that doesn't have the notebook
as its parent window.
-------------------------------------------------------------------------
QUAL-IMP UICL IThread::setPriority sets priority class but
not priority level.
-------------------------------------------------------------------------
QUAL-IMP UICL Accelerator causes an IMenuHandler::menuEnded
and thus an extra unwanted repaint.
-------------------------------------------------------------------------
QUAL-IMP UICL IFrameWindow constructor fails when using
using default size and all previous frame
windows have been removed from the task list.
-------------------------------------------------------------------------
QUAL-IMP UICL The entry field and spin arrow components of
a spin button were not correctly resized and
repositioned when the size of an ISpinButton
was changed.
-------------------------------------------------------------------------
QUAL-IMP UICL Help for a notebook tab should be provided
through the IPageHandler::help function.
However, this function was never being called
when the user pressed F1 when on a notebook
tab.
-------------------------------------------------------------------------
QUAL-IMP UICL Container popups do not get generated from
the keyboard when container is on a canvas.
-------------------------------------------------------------------------
QUAL-IMP UICL IMenuHandler::menuEnded should by default
return true.
-------------------------------------------------------------------------
QUAL-IMP UICL Primary window not restorable from the Task
List when minimized with a secondary window.
-------------------------------------------------------------------------
QUAL-IMP UICL The event result assigned by an override of
the IHelpHandler::subitemNotFound function
was always ignored, which caused the extended
help panel for the window to always be
displayed.
-------------------------------------------------------------------------
QUAL-IMP UICL The functions IHelpSubitemNotFoundEvent::topicId
and IHelpSubitemNotFoundEvent::subtopicId did
not return the correct values.
-------------------------------------------------------------------------
QUAL-IMP UICL The default implementation of many of the
virtual functions of the IHelpHandler class
did not allow more than one of these handers
to be attached to the same window. Only the
last help handler attached to a window would
be called.
-------------------------------------------------------------------------
QUAL-IMP UICL When constructing an IHelpWindow using an
IHelpWindow::Settings object, the "Help"
pull-down menu of the help window would
always show a "Tutorial" choice, even if no
tutorial name were specified in the settings
object.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiLineEdit::hasSelectedText returns true
erroneously.
-------------------------------------------------------------------------
QUAL-IMP UICL Background enumeration missing from
IListBox::ColorArea.
-------------------------------------------------------------------------
QUAL-IMP UICL Container control drag/drop help is not
working.
-------------------------------------------------------------------------
PJ14635 UICL Excessive Tracing closes PMPRINTF.EXE
-------------------------------------------------------------------------
PJ14636 UICL Activation not returning to owner after
modeless dialog is dismissed.
-------------------------------------------------------------------------
PJ14638 UICL Turning trace off while in a member function
causes stack overrun in trace formatter.
-------------------------------------------------------------------------
QUAL-IMP UICL Memory leaks in IFont during IFont
destruction.
-------------------------------------------------------------------------
PJ14639 UICL Custom image not working for drag object.
-------------------------------------------------------------------------
PJ14640 UICL The ICnrCtl::hwnd variable stored in IThread
may be invalid.
-------------------------------------------------------------------------
QUAL-IMP UICL IGUIColor::setColor doesn't work.
-------------------------------------------------------------------------
QUAL-IMP UICL Help, File Dialog, and Font Dialog don't work
with the OS/2 Performance Beta.
-------------------------------------------------------------------------
=========================================================================
CTM0005 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTM0005
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP CCL Reduction of generated code size by changing
internal macro expansions.
-------------------------------------------------------------------------
QUAL-IMP CCL Suppress informational warning messages
in Collection Classes via #pragma info usage.
Made Collection Classes independant from
/Sp1 option and #pragma pack usage via
#pragma pack(4) usage in header files.
-------------------------------------------------------------------------
QUAL-IMP CCL Support multiple includes of "isynonym.hpp"
to get independant of include sequence.
-------------------------------------------------------------------------
QUAL-IMP CCL Improved coding example "dskusage" by
changing output sequence from forward to
backward.
-------------------------------------------------------------------------
QUAL-IMP CCL Improved comments in coding example
"DSUR".
-------------------------------------------------------------------------
QUAL-IMP CCL Adjusted expected output in example
"WORDBAG".
-------------------------------------------------------------------------
PJ13362 UICL IString::isLike failing on wildcard search
Error encountered when pattern matching
after * fixed.
-------------------------------------------------------------------------
PJ13363 UICL IStaticText paints disabled text wrong
The static text handler is incorrectly
painting disabled text in the static text
field.
-------------------------------------------------------------------------
PJ13365 UICL No error message for
IHelpWindow::addLibraries
-------------------------------------------------------------------------
QUAL-IMP UICL IContainerObject::deleteRecord modified
to fix memory Leak in the Container.
-------------------------------------------------------------------------
QUAL-IMP UICL Cannot hide objects in the container
-------------------------------------------------------------------------
QUAL-IMP UICL DDEClientConversation Hang on Shutdown
-------------------------------------------------------------------------
QUAL-IMP UICL DDE uses critical sections incorrectly
-------------------------------------------------------------------------
QUAL-IMP UICL Compiling all hpps with /Wall /Wgnr- /Wvft-
results warnings. Customers on compuserve
have requested that they be eliminated
-------------------------------------------------------------------------
QUAL-IMP UICL Trap in ITextControl::displaySize when
passed a null string.
text() returned IString is out of scope
before member function completes.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiLineEdit::selectedTextLength text
length is off by one character.
Also hasSelectedText returns the wrong value
when 1 character is selected.
-------------------------------------------------------------------------
QUAL-IMP UICL The IScrollEvent constructor traps if
no IWindow* can be found for the window
originating the scroll message. This occurs
when creating a PM scroll bar window without
the IScrollBar class and an IScrollHandler
is attached to its owner window.
-------------------------------------------------------------------------
QUAL-IMP UICL Tabbing from the last control in a canvas or
back-tabbing from the first control in a
canvas can cause the machine to hang.
-------------------------------------------------------------------------
QUAL-IMP UICL Changing the icon of a container object
refreshes the whole container and not only
the object which icon was changed. Also,
calling IContainerObject::setIconText while
the IContainerControls refresh is OFF does a
refresh.
-------------------------------------------------------------------------
QUAL-IMP UICL Opening a popup menu on selected container
objects and dismissing this popup menu
refreshes the container ONCE for each
selected container object.
-------------------------------------------------------------------------
QUAL-IMP UICL DDE clean up of compares to false enum
-------------------------------------------------------------------------
QUAL-IMP UICL When the DrawFlag on
IListBoxDrawItemHandler::draw() is set to
drewSelected, PM will no longer try to draw
the selection highlight.
-------------------------------------------------------------------------
QUAL-IMP UICL IViewPort logical size constrained by PM
scroll bar limits.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiCellCanvas does not paint with the
color passed to setColor().
=========================================================================
CTM0004 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTM0004
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
PJ12170 UICL Acknowledgement from remoteExecute handled
incorrectly in DDE.
-------------------------------------------------------------------------
PJ12171 UICL IDM::rfObject is missing from rendering
format constants and needs to be added.
-------------------------------------------------------------------------
PJ12172 UICL After bringing up a window from a popup menu
from a container in a canvas, the window does
not have the focus.
-------------------------------------------------------------------------
QUAL-IMP UICL IFont class is missing operator=.
-------------------------------------------------------------------------
QUAL-IMP UICL Memory for the window list is not being
freed when a window is destroyed. A static
member of IMenuHdr is being freed too soon.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiLineEdit::importFromFile adds one too
many bytes to the mle if the file length is
not a multiple of 1024.
-------------------------------------------------------------------------
QUAL-IMP UICL After bringing up a popup menu for the entire
container, you can no longer query the
container object that has the cursor.
-------------------------------------------------------------------------
QUAL-IMP UICL If you create a graphic PushButton with the
sizeToGraphic style and pass in a rectangle,
the graphic is displayed incorrectly. In
addition, it comes up in the highlighted
state.
-------------------------------------------------------------------------
QUAL-IMP UICL Need to imporve how the graphic is drawn on
the graphic PushButton.
-------------------------------------------------------------------------
QUAL-IMP UICL Setting a vector font on an IMLE causes a
hang.
-------------------------------------------------------------------------
QUAL-IMP UICL Using setDeleteObjectsOnClose in a details
view container with many items can cause
it to take an unacceptable amount of time
to terminate.
-------------------------------------------------------------------------
QUAL-IMP UICL istattxt.inl is not included in istattxt.hpp.
-------------------------------------------------------------------------
QUAL-IMP UICL IThread::messageQueue returns HMQ_CURRENT
instead of the actual message queue handle
for the thread.
-------------------------------------------------------------------------
QUAL-IMP UICL Setting the icon handle to 0 in
IGraphicPushButton causes a trap in PMWIN.
=========================================================================
CTM0003 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTM0003
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
PJ11717 UICL In a multithreaded situation a hang would
sometimes occur in UICL.
-------------------------------------------------------------------------
PJ11719 UICL A window handle was not validated before an
attempt was made at creating an instance of
IWindowClassName.
-------------------------------------------------------------------------
PJ11721 UICL IMenuHandler::menuEnded() was accessing
memory that was no longer valid.
-------------------------------------------------------------------------
QUAL-IMP UICL When creating a textCursor for a container in
details view, the cursor does not work
PROPERLY for all the text columns.
-------------------------------------------------------------------------
QUAL-IMP UICL On receipt of WM_BEGINDRAG, UICL was
attempting to obtain the pointer position
from message parameter 2. The pointer
position is actually contained in message
parameter 1.
-------------------------------------------------------------------------
QUAL-IMP UICL On receipt of DM_PRINTOBJECT, UICL was
attempting to obtain a pointer to a DRAGINFO
structure from message parameter 1. Message
parameter 1 actually contains a pointer to a
DRAGITEM structure.
-------------------------------------------------------------------------
QUAL-IMP UICL Added IMenuDrawItemEvent as the first
PARAMETER to IMenuDrawItemHandler::setSize
VIRTUAL FUNCTION in order to provide a way to
FIND THE ID OF the item to be sized.
========================================================================= |
![]() |
||
WF21_3 v. 2.1 (20/2/1995, International Business Machines Corporation (IBM)) | Readme/What's new |
WF21_3 is a CSD (set of fixes) for the WorkFrame/2, Version 2.1 that is
included in C Set ++ for OS/2, Version 2.1.
All the WorkFrame CSDs are cumulative, so you only need to apply the
latest one (i.e. the one with the highest number after the WF21 prefix).
The CSD must be applied using the provided installation tools. See the
READ.ME file in WF21_3.ZIP for instructions on how to apply the CSD.
Files in this directory:
------------------------
csdfixes.lst - a text file that lists the fixes that are included in this CSD.
You may want to get this file to see what fixes are included
before getting the actual CSD. This file is included in the
ZIP file, so you do not need to get it if you are getting the
ZIP file.
wf21_3.zip - contains the CSD.
readme.txt - this file
Instructions:
-------------
Get the ZIP file in binary mode.
Unpack the ZIP file into a clean directory.
Follow the instructions in the READ.ME file for applying the CSD.
Contact:
--------
If you have any questions about these files, please contact
cset2@vnet.ibm.com.
Workframe/2 V2.1 CSD #3
Description:
------------
This CSD is required to run WorkFrame/2 V2.1 on OS/2 Warp. It also
fixes some problems apparent on OS/2 2.11.
Content:
--------
DISK1.ZIP
DISK2.ZIP
Unpack and Install Instructions:
--------------------------------
This CSD may be installed from either hard file or diskette.
Hard file installation:
-----------------------
- Unpack both DISK1.ZIP and DISK2.ZIP into an empty directory. You must
run the unzip program with the -d option.
- From that directory, execute the WFUPDATE program
- Reboot your machine
Diskette installation:
----------------------
- Unpack both DISK1.ZIP and DISK2.ZIP onto empty 1.44 Mb
diskettes. You must run the unzip program with the -d option.
- Insert Disk 1 into drive A:
- With the root of drive A as the current directory, execute the
WFUPDATE program
- Reboot your machine
Fixes:
------
CSD3 contains all fixes in CSD2 and CSD1, as well as the following:
Installation
____________
** Phase 2 install has timing problems due to an OS/2 object creation
API that indicates that an object already exists before it has been
fully created.
Please refer to INSTALL.DOC on the WorkFrame/2 directory for more
information about how to install and uninstall WorkFrame/2.
Information
___________
A new task-based document on how to use WorkFrame/2 called DDE3TASK.INF
is installed on your WorkFrame/2 installation directory. You can refer
to this document to perform basic and advanced tasks using WorkFrame/2.
Projects
________
Project can be deleted while it is being refreshed.
Move and Copy controls are not disabled during processing of a move or
copy operation.
** Project crashes if icon view is closed when it has a large number of
files (over 1000) in it.
Action Profiles
_______________
Action profile settings notebook would trap when actions are moved in
and out, and then the settings notebook is closed.
DBCS Support
____________
Some resources have no DBCS counterparts; some characters don't exist
in the Japanese code page; some DBCS controls are truncated; Japanese
resource DLL cannot be loaded on a DBCS machine.
Monitor
_______
** Closing the monitor on OS/2 Warp sometimes causes PMSHELL to hang.
Multiple current monitors turned off by default.
** The Monitor is no longer preloaded for performance because it
prevents the PM Shell from restarting itself after a hang.
Double-clicking on the "Reset" push button causes an error.
Double-clicking on a monitor error occasionally causes an out-of-memory
error message.
IBM Library Manager
___________________
When adding a number of modules to a library, if the name of one
module is a substring of another (for example, AP and XAPY), the first
module is not added to the library.
Migration
_________
Migration does not succeed for some projects and profiles; migration
sometimes reports the wrong number of objects migrated.
Integration APIs
________________
WkfQueryEnvirons fails with the Default Actions Profile named
explicitly.
** Denotes a defect fixed especially for OS/2 Warp Version 3.0 |
![]() |
||
CTC0011 v. 2.x (Compiler CSD for C Set ++, 15/12/1994, International Business Machines Corporation (IBM)) | Readme/What's new |
Correct Service (CSDs) for C Set ++ for OS/2, Versions 2.0 and 2.1.
The CSDs are broken down into a number of different subcomponents to
help simplify the CSD distribution. Within each subcomponent, the CSDs
are cumulative, so you only need to apply the latest one for each
subcomponent.
The CSDs (except for WorkFrame/2) use the following name convention:
- The first two characters are alway CT.
- The next character indicates the subcomponent:
C - Compiler
O - Open Class Libraries
U - Utilities (e.g. debugger, browser, etc)
- The last four characters is the level of the CSD.
So, CTC0011 is the eleventh compiler CSD for C Set ++ Version 2.x.
The CTCxxxx and CTUxxxx CSDs are the same for both versions 2.0 and 2.1.
The CTLxxxx CSDs are class library fixes for version 2.0 only.
The CTMxxxx CSDs are class library fixes for version 2.1 only.
WorkFrame/2 Version 2.1 was only included with C Set ++ version 2.1.
WorkFrame/2 Version 1.1 was included with both C Set ++ version 2.0 and 2.1.
However, there are no CSDs for WorkFrame/2 V1.1.
Each CSD is in a separate subdirectory. See the readme.txt file in each
subdirectory for details on what you need to do to apply the CSD.
If you have any questions, please contact cset2@vnet.ibm.com.
This is a Customer Service Disk (CSD) for the IBM C/C++ Tools Product
*************************************************************************
* *
* This CSD contains fixes that are common to C/C++ Tools Version 2.0 *
* and Version 2.01. Notwithstanding the version statements *
* contained in the files of this CSD this is not an upgrade of *
* Version 2.0 to Version 2.01. *
* *
* The code to which you have access is determined by the version of *
* the software to which you are licensed. *
* *
*************************************************************************
------------------------------------------------------------------------
This CSD is provided as a set of files. You can choose one of the
following methods of installation:
(1) You can install directly from the directory in which the files are
found with the command:
[d:][path]SERVICE [d:\toolpath]
The CSD directory must be on a drive accessible to your operating
system, including drives on a LAN server.
The d:\toolpath argument is optional. If it is specified, the CSD
installation program assumes that IBM C/C++ Tools is installed in
that directory. If it is not specified, the program searches for
the installed version of IBM C/C++ Tools. If it cannot find the
installed product, the CSD installation program prompts you for a
directory.
The CSD may be installed to any disk accessible to your system,
including LAN drives. The service program itself must run within an
OS/2 2.0 or 2.1 session.
(2) You can create diskettes containing the CSD, and install the CSD
from the diskettes. To create diskettes, make the directory where
the CSD files are located the current directory, then enter:
MAKEDSKT a:
Where a: is the drive letter of the diskette drive where the CSD
diskettes are to be created. CSD diskettes may be 720Kb, 1.44Mb, or
2.88 Mb 3-1/2" diskettes, or 1.2Mb 5-1/4" diskettes. MAKEDSKT
determines diskette size automatically.
To install a CSD from diskettes, invoke the service program as
described in (1) above. The service program will prompt for
additional diskettes as required.
To recreate the CSD on a hard file, use XCOPY to copy the contents
of all the CSD diskettes to a directory on your hard file. For
information on XCOPY, please see the OS/2 online Command Reference.
------------------------------------------------------------------------
The following conditions must exist for CSD installation to be
successful:
(1) You must have already installed the IBM C/C++ Tools product. You
cannot apply the CSD to a beta copy of the product.
(2) The LIBPATH specified in your CONFIG.SYS file must include the
directory '.' (single period). OS/2 2.x puts this in your
LIBPATH by default.
(3) CSD installation uses the file DDE4FIX.DLL to locate the directories
in which the IBM C/C++ Tools are installed. This file was created
when you installed the IBM C/C++ Tools product. If it is not
present, the CSD installation program informs you that the product
is not installed. You must re-install C/C++ Tools before installing
the CSD.
(4) No IBM C/C++ Tools files can be open in any session when you install
the CSD. If the copy of IBM C/C++ Tools being serviced resides on a
LAN drive, you must ensure that no other LAN user has any of these
files open.
(5) Make sure that the directory for this CSD contains only files from
this CSD. If other files are present, it may cause the installation
to malfunction. i.e. If you received this CSD as a ZIP file, unpack
it into an empty directory.
------------------------------------------------------------------------
After the CSD installation terminates, the file DDE4FIX.LOG is placed in
the IBM C/C++ Tools base directory. It contains a cumulative log of all
CSD installations to this copy of the product.
This CSD applies fixes to only one of the components of the IBM C/C++
Tools. The components are the compiler, the class libraries, and the
utilities. To maintain the levels for these components separately, the
IBM C/C++ SYSLEVEL file will be split into three files, one for each
component (if this is the first time a CSD is applied).
A list of the fixes contained in this CSD can be found in the file
CSDFIXES.LST. The fixes are cumulative, meaning that this CSD contains
all fixes described in CSDFIXES.LST, even if they were fixed on a prior
CSD.
The complete list of files in this CSD can be found in the file
SERVICE.LST.
------------------------------------------------------------------------
C Set ++ Compiler Version 2.0
Fixes List
-----------------------------
*******************************************************************************
* *
* This CSD contains fixes that are common to C/C++ Tools Version 2.0 and *
* Version 2.01. Notwithstanding the version statements contained in the *
* files of this CSD, this is not an upgrade of Version 2.0 to Version 2.01. *
* *
* The code to which you have access is determined by the version of the *
* software to which you are licensed. *
* *
*******************************************************************************
===============================================================================
CTC0011 is informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------------
QUAL-IMP BE Compiling a module without a main() function using the /O
/Ol /Gu options could result a compile-time trap.
-------------------------------------------------------------------------------
QUAL-IMP BE When the multiplication of char or short constants results
in an overflow, incorrect code may be generated if the
result of the multiply is used in a comparison.
-------------------------------------------------------------------------------
QUAL-IMP BE An internal problem could result in a compile-time
exception when compiling a switch with /O+ /Ti+.
-------------------------------------------------------------------------------
QUAL-IMP BE In rare cases, stack space allocated by _alloca() could
become corrupted when using auto-inlining.
-------------------------------------------------------------------------------
QUAL-IMP BE Fixed an internal problem which in rare circumstances
could cause incorrect code generation
-------------------------------------------------------------------------------
PJ15990 BE ICL: When compiling with /Fw to generate intermediate
files, a bug in the ICL could result in the incorrect
intermediate files which causes the compiler backend
to trap.
-------------------------------------------------------------------------------
PJ16021 BE Defining an uninitialized variable of type double in more
than one module results in a LINK386 L2025 error (symbol
defined more that once).
-------------------------------------------------------------------------------
PJ15991 BE ICL: A bug in the ICL could cause a compile-time trap
in the compiler back end when the /Ol+ option is used.
-------------------------------------------------------------------------------
PJ15987 BE An internal problem occurring during register assignment
could cause a compile-time exception.
-------------------------------------------------------------------------------
PJ16024 BE Fixes a problem where the epilog of a function could
be incorrect if the function contains a call to _alloca.
-------------------------------------------------------------------------------
PJ15881 BE Statements of the form "x ? INT_MAX : INT_MIN;" could be
optimized incorrectly.
-------------------------------------------------------------------------------
PJ15876 BE The last compare and jump in strncat() should be unsigned
rather that signed.
-------------------------------------------------------------------------------
PJ15882 BE Fixed a problem where compiling with /Gr and then running
at ring 0 causes a Stack Segment Overrun trap.
-------------------------------------------------------------------------------
PJ15880 BE Incorrect code may be generated when a conditional
expression is logically negated and used as the test
expression within an if statement.
-------------------------------------------------------------------------------
PJ15894 BE The conversion from a segmented pointer to a flat pointer
may not occur if the _Seg16 pointer is cast to an int.
-------------------------------------------------------------------------------
PJ15935 BE Fixes a register assigning problem which could cause
a run-time trap when calling a function via a pointer.
-------------------------------------------------------------------------------
PJ16023 BE Fixes a problem where compiling with /Ti+ causes the
compiler to create a huge temporary file.
-------------------------------------------------------------------------------
PJ15986 BE A problem occurring while trying to optimize the usage
of registers could result in incorrect code generation.
-------------------------------------------------------------------------------
PJ15883 BE In rare cases, the generated code for the builtin version
of strcmp could be incorrect when one of it's parameters
is a function.
-------------------------------------------------------------------------------
PJ15993 BE Consecutive / and % operators with identical operands
inside simple loops could be compiled incorrectly.
-------------------------------------------------------------------------------
PJ15869 BE Compiling an "if" that contains a negated ternary
expression could cause a compile-time trap.
-------------------------------------------------------------------------------
QUAL-IMP BE Using #pragma alloc_text() to place a function in the
default code segment (CODE32) may result in a run-time
exception since two CODE32 segments may be created.
-------------------------------------------------------------------------------
PJ15872 BE Fixed an internal problem that could cause a compile-time
trap when compiling an simple "if" containing the logical
negation of a floating-point variable.
-------------------------------------------------------------------------------
QUAL-IMP BE Incorrect debug information generated which could cause
IPMD to fail.
-------------------------------------------------------------------------------
QUAL-IMP BE When using the /Gt option, static arrays of the same
type could be mapped on top of each other in rare cases.
-------------------------------------------------------------------------------
PJ16038 BE Fixes a register assigner bug that could cause incorrect
register spills/reloads of 8 or 16 bit values.
-------------------------------------------------------------------------------
PJ15870 BE In rare cases, the code generated for the builtin version
of memchr could be incorrect when using the /G5 option.
-------------------------------------------------------------------------------
PJ15994 BE Instruction scheduling could cause code containing
consecutive memsets to fail.
-------------------------------------------------------------------------------
PJ15996 BE An internal problem occurring during loop unrolling
could result in a compile-time exception.
-------------------------------------------------------------------------------
PJ15933 BE An illegal MOV instruction could be generated when
converting a 32-bit value to an 8-bit value.
-------------------------------------------------------------------------------
PJ15934 BE An internal problem occurring while handling floating-point
parameters in registers could cause a compile-time trap.
-------------------------------------------------------------------------------
PJ16313 BE Incorrect code may be generated when converting an integer
value to a floating-point value if the integer variable is
used after the conversion.
-------------------------------------------------------------------------------
PJ16037 C++FE In some rare cases, compiler might corrupt identifier
CFE names that are also macro names not eligible for macro
expansion.
e.g., #define max(a,b) (((a) > (b)) ? (a) : (b))
int max;
| -> max here could be corrupted
-------------------------------------------------------------------------------
QUAL-IMP CFE Compiler is not generating correct code for the side
effect in the following 'if' statement:
if (*++p == '-0' && !1) ;
'p' does not get incremented as expected.
-------------------------------------------------------------------------------
QUAL-IMP CFE Compiler is not correctly recognizing that statements in a
'switch' before any 'case' or 'default' are unreachable.
-------------------------------------------------------------------------------
PJ15888 CFE Declaration of function returning pointer to array of
unsigned int without 'int' specifier is misinterpreted.
i.e., (*foo())-┘ {}
causes the compiler to generate erroneous error message.
It should be accepted in the same way as:
int (*foo())-┘ {}
-------------------------------------------------------------------------------
PJ15887 CFE Compiler incorrectly issues error message for the
following correct code segment:
char * const kpz;
kpz[0] = '-0';
-------------------------------------------------------------------------------
QUAL-IMP CFE Compiler hangs when compiling source code with comment on
the last line and the comment exceeds the right margin.
-------------------------------------------------------------------------------
PJ16029 CFE Calling from 16 bit to 32 bit, and passing a pointer does
not result in the pointer being automatically thunked.
-------------------------------------------------------------------------------
PJ16028 CFE When ICC is invoked to compile a large number of files in
a command line or a response file, ICC fails with message
"Severe Error: Unable to retrieve messages from message
file."
-------------------------------------------------------------------------------
PJ16027 CRT If the result from internal function called by strtod()
would cause underflow exception, it is rounded to zero,
with proper error signaling.
-------------------------------------------------------------------------------
PJ15886 CRT strdup() allocates memory with malloc(), so it cannot be
freed in a program that was compiled with /Gt+. Changes
to the heap algorithm now permit any type of memory
(normal, tiled, or debug) to be passed to any kind of
free() or realloc() function. In the case of realloc(),
the resulting memory will be of the same type as the
original.
-------------------------------------------------------------------------------
PJ15885 CRT _LHUGE_VAL is a macro that is defined in math.h as being a
reference to an external variable. The variable was not
being exported from the library DLL. This has been
corrected.
-------------------------------------------------------------------------------
PJ15884 CRT Floating point number formatting has been changed to
better handle any precision for floating point numbers.
-------------------------------------------------------------------------------
PJ16026 CRT tmpnam() used to produce the same name in the first, tenth
hundreth call. It is guaranteed that it will now make
TMP_MAX unique names.
-------------------------------------------------------------------------------
PJ16273 CRT getcwd() and getdcwd() library functions will fail on
OS/2 Warp if the caller does not specify a buffer.
-------------------------------------------------------------------------------
PJ16025 BE In case of running out of file handles, tempnam() will
increase the number of allowable file handles and try
again.
-------------------------------------------------------------------------------
QUAL-IMP DLLRNAME DLLRNAME may not be able to handle renaming DDE4SBS.DLL
in the current directory.
-------------------------------------------------------------------------------
PJ16030 DLLRNAME Attempting to rename a DLL in another directory with DLLRNAME
results in the renamed DLL being left in the current
directory.
-------------------------------------------------------------------------------
PJ16031 CPPFILT CPPFILT has been modified so that it doesn't use CMD.EXE
to invoke a sub-program.
-------------------------------------------------------------------------------
PJ16057 C++FE The compiler was issuing an incorrect error for the
conversion of a pointer to a pointer to member of
the same type.
-------------------------------------------------------------------------------
PJ16083 C++FE The compiler was generating an error for a user
defined postfix increment operator for an enum.
-------------------------------------------------------------------------------
PJ16055 C++FE The value oxFFFFFFFF was not being accepted as a valid
enum value. It's size was also being set to the wrong
size.
-------------------------------------------------------------------------------
QUAL-IMP C++FE Mysterious external variables ___nnn being generated with
the /O+ compile option.
-------------------------------------------------------------------------------
PJ16056 C++FE #pragma export of an overloaded const and non-const
function was generating an error, and only one function
was being exported.
-------------------------------------------------------------------------------
QUAL-IMP C++FE New "#pragma defineonly" to match the AIX C Set++ compiler
-------------------------------------------------------------------------------
PJ15905 C++FE The compiler was trapping when it tried to issue an error
message for the invalid use of extern "C++" as a function
parameter.
-------------------------------------------------------------------------------
PJ15930 C++FE The compiler displayed 65536 as the column number when the
source file is a precompiled header file. This cause a
problem when trying to invoke an editor automatically under
the WorkFrame. The fix is to display 1 as the column
number when the source file is a precompiled header.
-------------------------------------------------------------------------------
PJ15931 C++FE In an array of dimension N containing pointers to member,
and with M initializers where M < N, the remaining N-M
members should be initialized to zero. Instead, they were
being left uninitalized and the first N-M were being
zeroed.
-------------------------------------------------------------------------------
PJ16032 C++FE Fixed problem with accessing base classes in hierarchies
containing virtual base classes.
-------------------------------------------------------------------------------
PJ16275 C++FE In some cases, temporary objects were being destructed
twice. In some other cases, objects caught in a catch
clause were not being destructed at all.
-------------------------------------------------------------------------------
QUAL-IMP Samples PMLINES sample program in SAMPLE1A used the WinPeekMsg()
API incorrectly, causing the sample to fail on OS/2 Warp.
===============================================================================
CTC0010 is informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-------------------------------------------------------------------------------
PJ14307 BE A dangling assignment to a floating point parameter inside
a function can cause a floating point stack overflow if
called often enough
-------------------------------------------------------------------------------
PJ14318 BE This fix will correct a boundary problem that occurs when
compiling with option /Gt+ if your program contains static
data objects exactly equal to 64K in size. The problem
does not occur when option /Gt- is specified.
-------------------------------------------------------------------------------
PJ14309 BE Fixed a register problem that may occur when using _alloca
with optimization.
-------------------------------------------------------------------------------
PJ14310 BE A floating-point parameter for a function call could be
set up incorrectly if the call is the last operation in a
function (the tail call optimization).
-------------------------------------------------------------------------------
PJ14311 BE Storing a char into an int and then later storing the int
back into the char could, in very rare circumstances,
produce incorrect code.
-------------------------------------------------------------------------------
PJ14312 BE Nested for loops in which the iteration variables are
members of the same structure may cause incorrect code
generation.
-------------------------------------------------------------------------------
PJ14313 BE Floating-point parameters may be left on the NPX register
stack if there is an "if {...}" immediately above a "for
(;;)" loop near the start of a function. This can later
result in a floating point stack overflow exception.
-------------------------------------------------------------------------------
PJ14314 BE An internal problem could result in a compile-time
exception when processing a function with floating-point
parameters.
-------------------------------------------------------------------------------
PJ14315 BE Calling a function with two or more similar aggregate
parameters could result in incorrect code generation.
-------------------------------------------------------------------------------
PJ14316 BE Incorrect code could be generated for 16-bit operations
that use the BP register when optimizing code without the
/Op- compile parameter also specified.
-------------------------------------------------------------------------------
PJ14317 BE If a conditional break inside an infinite loop jumps to a
return, static variables used in the loop may not be
correct at the return.
-------------------------------------------------------------------------------
QUAL-IMP BE Accessing an int as a bitfield structure has undefined
behaviour according to the ANSI C standard. However, the
behaviour has been changed so that it is more in line with
"intuitively obvious" behaviour.
-------------------------------------------------------------------------------
PJ14424 BE In very rare circumstances, incorrect code may be
generated when the only use of a parameter is a copy to a
local variable.
-------------------------------------------------------------------------------
QUAL-IMP BE Division and remainder operations that conditionally
execute within a loop could be moved outside of the loop,
perhaps causing unexpected divide-by-zero exceptions. (a
result of the invariant code motion optimizations)
-------------------------------------------------------------------------------
PJ14579 BE Under rare circumstances, due to an internal problem,
compiling a large C++ module with /O+ /Ti+ can cause a
compile-time exception.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The compiler was not restricting the change of char to
signed or unsigned char during integral promotions only.
They are three distinct types.
Note: This fix may cause code that previously compiled
cleanly to produce errors. It is simply the compiler
detecting an error that it wasn't detecting previously.
-------------------------------------------------------------------------------
PJ14428 C++FE When a variable is initialized , any temporaries that are
created in the initializer expression should have their
destruction delayed until the end of the block. For a
reference variable to a ternary expression this is not the
case and the destructors are being called too soon.
-------------------------------------------------------------------------------
PJ14431 C++FE Compiler traps while generating a message for an
inaccessible constant expression in a switch statement.
-------------------------------------------------------------------------------
QUAL-IMP C++FE Compiler may trap when generating the error message
EDC3004: "{" statement is not allowed in this scope.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The compiler issues an invalid error message for an
unrecognized type when the symbol is actually a template
argument T.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The compiler generates an error when trying to pass a
array argument to a class template that takes a char *
arg.
-------------------------------------------------------------------------------
QUAL-IMP C++FE A declaration without a type specification causes the C++
compiler front end to trap when generating an error
message.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The C++ compiler front end traps when compiling a
statement of the form:
<function typedef> <_Optlink specifier> <function name>
(<empty argument list>)
-------------------------------------------------------------------------------
PJ14433 C++FE The C++ compiler is restricting the use of:
#pragma comment(user,"..")
It can only occur once in a source file and must appear
before any C++ statements.
-------------------------------------------------------------------------------
PJ14434 C++FE The compiler is not generating a temp when passing an
array to a function that takes a const char * const &
argument. This results in a bad address being passed to
the function.
-------------------------------------------------------------------------------
QUAL-IMP C++FE When a nested type that is a typedef is used as a base
class the compiler checks the access of the target of the
typedef instead of the typedef name and an invalid access
error is generated.
-------------------------------------------------------------------------------
QUAL-IMP C++FE The C++ language specifies that for non-member operator
functions, at least one of the arguments must be of class
type, reference to class, enum type, or reference to enum.
The compiler is generating an error for the definition of
a operator + function that takes an enum and an int as
parameters.
-------------------------------------------------------------------------------
QUAL-IMP C++FE Initialization of static reference variables is happening
at runtime static initialization instead of at compile
time.
-------------------------------------------------------------------------------
PJ14445 C++FE The preprocessor may generate the invalid error:
"The suffix for the floating point constant is not
valid."
when concatenating two valid tokens together to form a
floating point constant.
-------------------------------------------------------------------------------
QUAL-IMP C++RT A program that supplies its own version of delete may have
had the compiler supplied version called instead of the
user version when linking dynamically.
-------------------------------------------------------------------------------
QUAL-IMP C++RT Fixed problem where a duplicate symbol error was generated
by the linker when a user provided global new() was linked
into a program that also called set_new_handler().
-------------------------------------------------------------------------------
PJ14347 CFE If a variable is first declared as 'static' variable in
file scope, then declaration of the same variable name in
function scope should refer to the same variable. This
linkage of identifiers does not work properly when /Ti+ is
not specified.
-------------------------------------------------------------------------------
PJ14346 CFE Compiler generated segmented to flat pointer conversion is
missing for the following code segment:
char * fp;
unsigned long l = 0;
fp = l < 0
? 0
: (char* _Seg16)(void*)(void* _Seg16)l;
-------------------------------------------------------------------------------
PJ14343 CFE Compiler internal error occurs compiling unusually large
program with optimization turned on.
-------------------------------------------------------------------------------
PJ14345 CFE #pragma margins and /Sg options causes erroneous /Wppc
info message when the line ends at the right margin.
-------------------------------------------------------------------------------
PJ14325 CFE After Invoking the compiler from a network drive with
preload (/Tl) enabled, the network drive stays locked.
-------------------------------------------------------------------------------
PJ14329 CFE In macro expansion, preprocessor mistreats two dots
followed by any character as an elipsis.
#define test left..right
test is expanded to left..ight
-------------------------------------------------------------------------------
QUAL-IMP CFE Some #line directives with file names specified are not
processed properly by the compiler.
-------------------------------------------------------------------------------
QUAL-IMP CFE The compiler is failing to provide a closing double quote
(") on the executable name when calling LINK386. This
does not cause a problem with LINK386.EXE, but could cause
problems with other linkers.
-------------------------------------------------------------------------------
QUAL-IMP CFE When ICC is compiling TEMPINC files, it is possible that
compiling one TEMPINC file will update another one and
make it out of date. ICC needs to loop doing TEMPINC
compiles until all objects are up to date.
-------------------------------------------------------------------------------
PJ14445 CFE The preprocessor erroneous issues an error message for the
following legal macro expansion:
#define MAKEHEX(a) 0x##a
float j = MAKEHEX(2e);
-------------------------------------------------------------------------------
PJ14454 CFE The C compiler generates incorrect code when evaluating
the address of an array of array of structure members
within another structure, with array index of 0.
e.g. for the following structure, the values of
&s2.s1[1][0].j and &s2.s1[1]->j are not evaluated
properly:
struct {
int i;
struct {
int j;
} s1[2][3];
} s2;
-------------------------------------------------------------------------------
PJ14279 CRT getcwd() fails intermittently, returning an OS/2 error.
-------------------------------------------------------------------------------
PJ14281 CRT The spawnx() and execx() families of functions sometimes
pass a incorrect parameter list to the child process.
-------------------------------------------------------------------------------
PJ14308 CRT When a file is opened for low level I/O in text mode, and
the last character read from the file is a carriage return
('\r'), the _read() function moves the file pointer back
by 1. This causes incorrect results only if the next
operation on the file is _write() or _tell().
-------------------------------------------------------------------------------
PJ14456 CRT The TZ variable in the environment does not support
timezones which are not an integral number of hours
different from GMT. The format of the TZ variable has
been changed to support this now. The format is now:
SSS[+|-]hh[:mm[:ss]]DDD[,sm,sw,st,em,ew,ed,et,shift]
[] indicates optional parameters.
Note the addition of the minutes and seconds to the
offset.
-------------------------------------------------------------------------------
PJ14455 CRT On OS/2 2.11, the DosKillThread API cannot kill C library
routines that get input from the keyboard. This works on
OS/2 2.0 and 2.1, although it has unpredictable side
effects. The library has been changed to allow this
particular use of DosKillThread() to work safely on OS/2
2.11. Using the DosKillThread() API still has
unpredictable side effects on OS/2 2.0 and 2.1 (an OS
limitation).
-------------------------------------------------------------------------------
QUAL-IMP SCL A bug in ostrstream causes program to trap. The actual
bug is inside streambuf's sync(). It tries to put the end
of line character into an empty stream buffer.
-------------------------------------------------------------------------------
PJ14427 SCL Memory is allocated by the iostream library during static
initialization, but is not being freed during termination.
This causes a memory leak if the iostream functions are
statically linked to a DLL which is dynamically loaded and
unloaded.
-------------------------------------------------------------------------------
=========================================================================
CTC0009 is formal Corrective Service
The following fixes are provided in Compiler CS CTC0009
**************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
--------------------------------------------------------------------------
PJ13703 CFE Defining the first token in a program as
a character string with the /D option
causes an internal compiler error
--------------------------------------------------------------------------
QUAL-IMP CFE Label not found message does not
indicate which label is not found.
--------------------------------------------------------------------------
QUAL-IMP CFE Internal compiler error while generating
/Wenu messages for program with 'case'
statement outside 'switch' scope.
--------------------------------------------------------------------------
PJ13705 BE Fixed a parameter passing problem that
occurs when the last statement of a
function is to a _Pascal function.
--------------------------------------------------------------------------
QUAL-IMP BE Allow the optimizer to assign registers
a little more efficiently in certain
circumstances.
--------------------------------------------------------------------------
PJ13706 BE A loop that contains a goto to a return
could, in rare cases, cause incorrect
code generation.
--------------------------------------------------------------------------
PJ12329 CRT A 16-bit function will get a protection
exception if the function has a large
automatic storage area. This problem
occurs on secondary threads, and happens
because the stack is not committed when
the thread begins execution and the
16-bit code does not have stack probes.
The compiler runtime code that sets up
the 16bit stack needs to commit it.
--------------------------------------------------------------------------
PJ13704 CRT Compiling 16-32 callback funtions with
static link results in duplicate references
when linking.
Reference APAR PJ12507
--------------------------------------------------------------------------
QUAL-IMP CRT Now checking if a destructor exists
during error recovery in __vec__copy().
May have caused traps
=========================================================================
CTC0008 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0008
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ12307 BE Cannot access local variables of callback
functions within the Debugger.
-------------------------------------------------------------------------
PJ12325 BE Incorrect code may be generated for a
conditional increment or decrement if the
comparison is signed.
-------------------------------------------------------------------------
PJ12340 BE The conversion of an address to a segmented
address may be incorrectly done if the
address involves an index calculation
(ie: &array{i-1})
-------------------------------------------------------------------------
PJ12341 BE A register used by strncat() could be
clobbered under rare circumstances and
cause incorrect behaviour.
-------------------------------------------------------------------------
PJ12376 BE Fixed an internal problem with the handling
of conditional increments with side effects.
-------------------------------------------------------------------------
PJ12431 BE Incorrect register selection could cause
incorrect results when performing a bitwise
AND (&) with a constant.
-------------------------------------------------------------------------
PJ12507 BE & CRT Compiling 16 to 32 callback functions with
/Gh+ causes a run-time trap.
-------------------------------------------------------------------------
QUAL-IMP BE Incorrect register selection could lead to
traps or unexpected results with 32 to 16 to
16 to 32 code.
-------------------------------------------------------------------------
QUAL-IMP BE Fixed a problem similarto PJ11975 for
conditional decrements.
-------------------------------------------------------------------------
PJ12567 CRT Exception handler was not deregistered within
heap_check when using /TM+
-------------------------------------------------------------------------
PJ12326 CFE If listing is enabled (/Ls, /Li, or /Lj) and
the source code contains nested #if, #elif
and #ifdef, the compiler might fail with
unexpected compiler error.
-------------------------------------------------------------------------
PJ12327 CFE & C++FE After compiling programs with preload turned
on, sometimes the front-end traps after the
compilation is completed.
-------------------------------------------------------------------------
PJ12477 CFE The compiler was not checking against
possible errors reading the source and
header files.
-------------------------------------------------------------------------
PJ12490 CFE ICC will be changed to ignore /Si+ option
when /Fb+ option is specified.
-------------------------------------------------------------------------
QUAL-IMP CFE Pre-load program was not checking the return
codes from some API calls.
-------------------------------------------------------------------------
QUAL-IMP CFE If the compiler is first invoked from a
directory with preload option enabled, while
the compiler stays loaded, the user is
prevented from removing the directory.
This is inconvenient for the user.
-------------------------------------------------------------------------
QUAL-IMP CFE Compiling program with function calls with
very large number of arguments causes
compiler to trap.
-------------------------------------------------------------------------
PJ12378 C++FE If a class is _Exported, then a member
function is subsequently defined to be
"inline", the compiler still tells the linker
to export the function. This causes an
"undefined external" linker error.
-------------------------------------------------------------------------
PJ12388 C++FE A C++ program compiled with optimization
will cause the front-end to trap if a "const
int" static class data member is referenced
with explicit class qualification.
-------------------------------------------------------------------------
PJ12427 C++FE Erroneous conversion error between typedefs,
friend functions and the use of the friend
function.
-------------------------------------------------------------------------
PJ12445 C++FE Compiler trap processing declaration of const
var symbol previously used without being
declared.
-------------------------------------------------------------------------
PJ12479 C++FE Preprocessor trap when processing a macro
defined to NULL
-------------------------------------------------------------------------
PJ12492 C++FE When one anonymous union is nested inside
another in a C++ program, incorrect addresses
are generated for the union members.
-------------------------------------------------------------------------
QUAL-IMP C++FE Fixed #pragma page() and #pragma skip() so
that a listing file will not be generated if
the listing option is not activated on the
command line.
-------------------------------------------------------------------------
QUAL-IMP C++FE If the argument list of a macro is supplied
via another macro, the macro might not be
expanded as expected.
Note: Corresponding CFE fix was implemented
in CTC0006 as PJ11929
-------------------------------------------------------------------------
QUAL-IMP C++FE Wrapper <demangle.h> with #pragma pack
-------------------------------------------------------------------------
PJ12328 UTIL When a new C Set++ project (ie. no compiler
options have been set), is invoked under the
build action on the WorkFrame, the compiler
DLL will return the default action. The
default action is not to generate any .W
files.
-------------------------------------------------------------------------
PJ12522 UTIL Munch was giving the error "assert
<line_number> invalid object record." This
error was incorrectly being produced for
valid object record formats.
=========================================================================
CTC0007 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0007 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ11951 BE & CFE The optimizer misses a chance to inline
certain C++ functions.
-------------------------------------------------------------------------
PJ11979 CFE In source code:
int main (void) {
int a, b; b = 1; a = 2; return 0;
}
The symbols for a and b are generated in a
different order depending on whether /Ti is
on. They should be generated in the same
way no matter what the /Ti setting is.
-------------------------------------------------------------------------
QUAL-IMP CFE When /La compiler option is used, some of the
structures and unions are incorrectly shown
in the listing
-------------------------------------------------------------------------
PJ12108 CRT Library fixes made to solve problems when
debug allocated objects were freed with
non-debug routines and vice-versa.
In addition the environment variable
DDE4_HEAP_SKIP was added whereby the user can
skip the _heap_check that occur when debug
routines are invoked. The syntax is as
follows:
set DDE4_HEAP_SKIP=increment,starting
where: 'increment' is how often a
heap_check will be invoked, and 'starting'
(which is optional) is how many calls to
debug memory routines must occur before
heap_checks are done.
Example: DDE4_HEAP_SKIP=100,1000
will perform a heap_check after 1000 debug
memory routines have been called and on every
100 calls after that.
Example: DDE4_HEAP_SKIP=50
will perform a heap_check on every 50 calls
made to a debug memory routine
Note: If DDE4_HEAP_SKIP is not set in the
environment then the default will be to
invoke heap_check on every call to a debug
memory routine.
=========================================================================
CTC0006 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0006 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
-------------------------------------------------------------------------
PJ11896 BE Optimization Problem: A for loop that
functions like a memcpy() could be
incorrectly optimized if the source of the
copy is a struct member.
-------------------------------------------------------------------------
PJ11952 BE Optimization Problem: An internal problem
with expression simplification could result
in incorrect code generation.
-------------------------------------------------------------------------
PJ11953 BE Optimization Problem: Within an inner switch
of nested switches, a goto jumping to a break
for the outer switch could be turned into a
break for the inner switch.
-------------------------------------------------------------------------
PJ11975 BE Optimization Problem: Statements of the form:
"if (f1 < f2) i++", where f1 and f1 have
floating-point datatypes, could cause a
compile-time exception in the BE.
-------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: MOD operations could
generate results of the wrong sign if both
operands are negative. Similar results could
occur for MOD and DIV by a negative power of
2.
-------------------------------------------------------------------------
QUAL-IMP BE Fixed a small problem with the generated
assembler listing file - an incorrect symbol
could be used.
-------------------------------------------------------------------------
PJ11872 C++FE Fixed a trap in the C++ frontend. The trap
occurred when we tried to compile a source
file that contained a class that had 2
declarations of the same friend function and
a typedef for that function.
-------------------------------------------------------------------------
PJ11887 C++FE Fixed a trap when compiling code with a
definition of a function with _Far16 _Pascal
linkage.
-------------------------------------------------------------------------
PJ11981 C++FE If a conversion function yields a reference
to a class with constructors, and a temporary
is built from the result of that conversion,
the temporary is initialized by bitwise
copying instead of by calling its copy
constructor.
-------------------------------------------------------------------------
PJ11982 C++FE The compiler will deliberately not inline
some functions if doing so would break C++
exception handling. However, when exception
handling is disabled by /Gx+, the compiler
still fails to inline those functions.
-------------------------------------------------------------------------
PJ11983 C++FE A complex expression containing more than one
conditional subexpression (i.e. the x ? y :
z construct) may be generated such that the
subexpressions are evaluated in the wrong
order.
-------------------------------------------------------------------------
PJ11984 C++FE An inline function consisting of a single
return statement that returns a
type-converted parameter may be incorrectly
inlined.
-------------------------------------------------------------------------
PJ11881 CFE Sizeof typedef within sizeof sometimes
returns arbitrary value.
-------------------------------------------------------------------------
PJ11929 CFE If the argument list of a macro is supplied
via another macro, the macro might not be
expanded as expected.
-------------------------------------------------------------------------
PJ11889 CRT If the function that executes when a thread
begins execution calls 16-bit code, then
EDCThunkProlog is called from within the
function prolog. EDCThunkProlog tries to
access data that is outside the stack frame,
and since this is the first frame on the
stack, that storage is not allocated to the
stack. A protection exception occurs.
=========================================================================
CTC0005 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0005 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11625 BE Optimization Problem: Compiling source that
contains floating-point code could cause a
compile-time trap in the backend.
------------------------------------------------------------------------
PJ11688 BE Optimization Problem: Statements of the form
"do { i++; } while (condition); i--;" could
be incorrectly optimized.
------------------------------------------------------------------------
PJ11692 BE Incorrect debug info could be generated for a
data member of a class with type "char *
const".
------------------------------------------------------------------------
PJ11695 BE Optimization Problem: Instruction scheduling
could clobber the result of constant multiply
across a call.
------------------------------------------------------------------------
PJ11696 BE Optimization Problem: Using an int variable
as an array of chars within a loop could
result in incorrect code generation.
------------------------------------------------------------------------
PJ11697 BE Optimization Problem: Statements of the form
"while (cond) { if (--i) { i++; break; } }"
could be incorrectly optimized.
------------------------------------------------------------------------
PJ11698 BE Optimization Problem: If the "count" paramter
of strncat() is a builtin string function,
incorrect code could be generated.
------------------------------------------------------------------------
PJ11699 BE Optimization Problem: Tail calling a _Pascal
function from another function could result
in an exception at run-time.
------------------------------------------------------------------------
PJ11701 BE strncat() could copy one byte even if "count"
parameter is a variable of value 0.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Adding two negative
numbers and then negating the result could be
optimized incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE Without optimization, an expression of the
form "*((char*)&array[index]+i)" could
generate an incorrect OBJ even though the
ASM is correct.
------------------------------------------------------------------------
PJ11491 C++FE new() is not returning a valid pointer when
allocating a 0-sized array.
------------------------------------------------------------------------
PJ11492 C++FE The delete() operator for an object was not
being called with the debug parameters when
that object was being deleted because its
constructor threw an exception.
------------------------------------------------------------------------
PJ11574 C++FE Reduce the long link times and large swapper
file created when linking C++ programs that
contain templates.
------------------------------------------------------------------------
PJ11575 C++FE If a virtual base class appears more than
once in the class hierarchy, then one copy of
if may be initialized several times and the
other copies not initialized.
------------------------------------------------------------------------
PJ11584 C++FE The compiler may crash when generating debug
information for a class that has no
user-supplied nor compiler-generated inline
functions. This is rare, since there are
usually some compiler-generated ones.
------------------------------------------------------------------------
PJ11585 C++FE If a C++ compilation includes definitions of
classes that contain virtual functions, all
of which are inline functions, the compiler
will generate those classes and functions
whether or not they are actually used. This
fix generates them only when necessary
------------------------------------------------------------------------
QUAL-IMP C++FE A C++ program containing a brace-enclosed
statement block outside of a function body
crashes the front-end when compiled with
/Wuse+ if there is an unused label define
in the block
------------------------------------------------------------------------
QUAL-IMP C++FE A goto within a catch block is incorrectly
diagnosed as a jump into the catch block,
which is illegal since it bypasses
initialization of the catch variable
------------------------------------------------------------------------
QUAL-IMP C++RT Fixed memory leak that occurred when memory
is allocated for an object however, it is not
constructed because it's constructor threw an
exception.
------------------------------------------------------------------------
PJ11702 CFE The compiler is not recognizing a constant
expression properly when initialization
involves an array within a structure within
an array of structures
------------------------------------------------------------------------
PJ11703 CFE Using CSD 1 of C Set ++, the test case is
expected to have a warning message, but the
compiler should not be trapping.
------------------------------------------------------------------------
PJ11686 CRT The problem lies in reading across memory
blocks. The code did not take into account
of the number of characters read in from the
previous blocks and hence reading more than
necessary.
------------------------------------------------------------------------
PJ11687 CRT AL register will now be set by the library
when making a call to DosGetMessage.
=========================================================================
CTC0004 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0004 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ11127 BE Optimization Problem: Multiplying a variable
by a constant and the adding or subtracting 1
could result in incorrect code generation.
------------------------------------------------------------------------
PJ11128 BE Optimization Problem: An internal problem
could result in traps or unexpected results
with 32 to 16 or 16 to 32 code.
------------------------------------------------------------------------
PJ11129 BE Optimization Problem: In rare circumstances,
doing arithmetic with shorts could result in
traps or unexpected results.
------------------------------------------------------------------------
PJ11134 BE Optimization Problem: The result of a right
shift of a negative value, though
implementation defined, could differ at /O-
and /O+.
------------------------------------------------------------------------
PJ11135 BE Optimization Problem: The backend could abort
with fatal error EDC4005 in intermediate file
ROOPT when optimizing an if-then-else.
------------------------------------------------------------------------
PJ11137 BE Optimization Problem: Expressions of the
form: "*(float *) &var", where var is an int,
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11138 BE Optimization Problem: An internal problem
occuring when compiling floating-point code
could cause a compile-time back-end trap.
------------------------------------------------------------------------
PJ11139 BE Incorrect code could be generated when
negating a char variable and then storing the
result into an int variable.
------------------------------------------------------------------------
PJ11140 BE Optimization Problem: Statements of the form:
"x--; if (cond) x += 2;" may be incorrectly
optimized.
------------------------------------------------------------------------
PJ11141 BE Run-time traps could occur in code using 16
to 32 callback functions if the code crossed
a 64K boundary.
------------------------------------------------------------------------
PJ11142 BE When using strncat(), an extra NULL was being
appended to the end of the destination string
if the length of the source string was less
than "n".
------------------------------------------------------------------------
PJ11143 BE Optimization Problem: Statements of the form:
"if (!x) {y = 0;} else {y = 1;}" could cause
a compile-time trap if x is a float-point
type.
------------------------------------------------------------------------
QUAL-IMP BE Under certain conditions, the optimizer could
leave around some useless LEA instructions.
This has now been fixed.
------------------------------------------------------------------------
QUAL-IMP BE When exporting callback functions, an
incorrect symbol could be used, resulting in
link errors.
------------------------------------------------------------------------
PJ11176 CFE Compiler generates incorrect code for
referencing array of array in structure
with array index of 0.
ie: a.b[i][0].c = 1; a.b[i]->c = 2;
------------------------------------------------------------------------
PJ11177 CFE If a variable is first declared and then
initialized both with a typedef type and
a qualifier, the compiler generates incorrect
code.
ie: const typedef_name var;
const typedef_name var = 0;
------------------------------------------------------------------------
PJ11179 CFE When initializing a member of a structure
casting the member to _Seg16 pointer causes
unexpected compiler error.
------------------------------------------------------------------------
PJ11180 CFE When #pragma handler is specified for some
functions, the compiler randomly generates
incorrect code that exports some of those
functions.
------------------------------------------------------------------------
PJ11181 C++FE The following message is produced when both
sides of a conditional expression are the
same:
recoverable EDC4005: Error occured in
intermediate file RBEXPR(4902)
------------------------------------------------------------------------
PJ11182 C++FE An initialized function-scope static variable
will cause the C++ front end to GPF if a
compiler temporary is required when
evaluating the initializing expression.
------------------------------------------------------------------------
PJ11183 CRT FILE struct members violate user name space.
------------------------------------------------------------------------
PJ11185 CRT MATHERR not handling domain errors.
=========================================================================
CTC0003 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0003 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10704 BE Incorrect debug information could cause IPMD
to trap in DDE4BE32.DLL while debugging C++
programs.
------------------------------------------------------------------------
PJ10705 BE Incorrect debug information for const member
functions could cause expression evaluation
problems in IPMD.
------------------------------------------------------------------------
PJ10706 BE Incorrect debug information could cause IPMD
to hang when debugging large programs.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect debug information could confuse
IPMD while debugging C++ programs.
------------------------------------------------------------------------
PJ10461 CRT Serialization code used in the runtime
library may cause system traps. This
usually occurs when one of the thread
unexpectedly terminates.
------------------------------------------------------------------------
PJ10703 C++RTL CPPFILT utility truncates the mangled
function names if it is greater than 233
characters.
=========================================================================
CTC0002 is formal Corrective Service
The following fixes are provided in Compiler CS CTC0002 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ10544 BE Optimization Problem: Compiling with /G5 /Ms
may optimize SUB ESP,4 into PUSH EAX at
inappropriate places.
------------------------------------------------------------------------
PJ10545 BE Incorrect code may be generated when copying
structures whose size is less than 12 bytes.
------------------------------------------------------------------------
PJ10546 BE Optimization Problem: An internal problem
during common subexpression elimination could
cause a compile-time exception.
------------------------------------------------------------------------
PJ10547 BE Optimization Problem: Incorrect code
generation may result when optimizing a loop
that contains a goto which acts like a break.
------------------------------------------------------------------------
PJ10549 BE Optimization Problem: Instruction scheduling
may move instructions out of the protected
area between _disable and _enable.
------------------------------------------------------------------------
PJ10550 BE Optimization Problem: Returning a floating
point value as an integer may cause problems
on machines without FP co-processors when
compiled with /O and either /G4 or /G5.
------------------------------------------------------------------------
PJ10552 BE The enum data offset field of a COMDAT placed
in a user segment was being set to a non-zero
value.
------------------------------------------------------------------------
PJ10553 BE Optimization Problem: An internal problem
could cause a compile-time trap when
compiling with /O+ /Gf+.
------------------------------------------------------------------------
PJ10556 BE The BE was not growing the number of file
handles available. This caused a
compile-time exception when the BE ran out of
file handles.
------------------------------------------------------------------------
PJ10557 BE Optimization Problem: Calling a 32-bit
function from the last statement of a _Far16
_Pascal function could be compiled
incorrectly.
------------------------------------------------------------------------
PJ10558 BE Optimization Problem: The incorrect register
may be cleared when returning 0.
------------------------------------------------------------------------
PJ10559 BE A constant left-shifted by another constant
may be folded incorrectly when compiled with
/Gi.
------------------------------------------------------------------------
PJ10560 BE Optimization Problem: Tail call optimization
was being incorrectly applied to a call to a
pascal linkage function from a system linkage
function.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: Bad register selection
around switch statements could cause
incorrect code generation.
------------------------------------------------------------------------
QUAL-IMP BE With C++, returning a complex structure from
a function whose destructor has been inlined
could be compiled incorrectly.
------------------------------------------------------------------------
QUAL-IMP BE An internal problem could cause a
compile-time trap when compiling, with /Gr
/Rn, a _Far32 _Pascal function that returns a
pointer.
------------------------------------------------------------------------
PJ10478 CFE The preprocessor was getting an internal
compiler error for certain macro expansion.
------------------------------------------------------------------------
PJ10477 CFE If a source/header file contains null
characters, the compiler gets an internal
compiler error and may result in a huge
swapper that may bring down your system.
------------------------------------------------------------------------
QUAL-IMP CFE Error message was being erroneously issued
when '_Export" keyword or '#pragma export'
are specified more than once for the same
object.
------------------------------------------------------------------------
PJ10566 C++FE Conversion function results in an
unconstructed temporary. No constructor was
called for the temporary object.
------------------------------------------------------------------------
PJ10567 C++FE When passing a class as a by value parameter
a temporary is not used and the class is
passed by reference.
------------------------------------------------------------------------
PJ10568 C++FE Member friend incorrectly inherits function
linkage from linkage specifier.
------------------------------------------------------------------------
PJ10569 C++FE Invalid Error message EDC3458 produced.
------------------------------------------------------------------------
PJ10570 C++FE GPF calling virtual member function of a
template class when the module uses #pragma
data_seg.
------------------------------------------------------------------------
PJ10571 C++FE Invalid error for postfix operator ++ on a
reference in a conditional expression.
------------------------------------------------------------------------
PJ10572 C++FE Invalid error message EDC3276 and GPF when
compiling a conditional expression.
------------------------------------------------------------------------
QUAL-IMP C++FE Runtime GPF accessing static data member
at location 0.
------------------------------------------------------------------------
QUAL-IMP C++FE /Ms causes a runtime GPF when exception
handling is used.
------------------------------------------------------------------------
PJ10462 CRT Thunk Prologue incorrectly probes stack
causing system traps. This may occur
with any 32-16 calls not in thread one.
------------------------------------------------------------------------
QUAL-IMP CRT Free not handling debug object. An debug
memory object (as allocated by the debug
memory routine) can cause system trap
after it is passed to the regular free()
function for freeing.
------------------------------------------------------------------------
QUAL-IMP CRT Spawn/Exec family functions should ignore
net error. If the net error is not ignored,
the search on the PATH stops prematurely,
which may cause spawns/exec functions not to
find any program whose path appears
after the net work path causing the error.
------------------------------------------------------------------------
QUAL-IMP UTIL Compiler dialog did not parse a file when the
file contains a '//' comment. It ignored
lines after the '//' character until a blank
line is reached.
------------------------------------------------------------------------
QUAL-IMP UTIL Dialog did not free up memory when saving
or retrieving information to/from the project
file extended attribute.
=========================================================================
CTC0001 is informal Corrective Service
The following fixes are provided in Compiler CS CTC0001 and later CS
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
------------------------------------------------------------------------
PJ09575 DOC Hitting Ctrl H in EPM for contextual help
did not work for printf or scanf. A change
was made in the DDE4CLIB.NDX file..
------------------------------------------------------------------------
QUAL-IMP ICC When /Fa compilation switch was used to
create assembler file, and a template file
was compiled, the compiler trapped.
------------------------------------------------------------------------
QUAL-IMP ICC Added the description of /Tm option to ICC
help.
------------------------------------------------------------------------
PJ09573 FE Fixed the compiler to disallow illegal
initialization of two-dimensional array
of char with character string without braces.
------------------------------------------------------------------------
PJ09574 FE Structure initialization failed with an
extra set of braces.
------------------------------------------------------------------------
QUAL-IMP FE Usage of _Export keyword caused the compiler
to fail.
------------------------------------------------------------------------
QUAL-IMP UTIL Beta project causes Workframe to trap.
------------------------------------------------------------------------
QUAL-IMP UTIL Update English panels to fix a Japanese
VGA screen.
------------------------------------------------------------------------
QUAL-IMP UTIL Remove the minimize capability of the
notebook dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL No keyboard focus when the notebook dialog
first appears.
------------------------------------------------------------------------
QUAL-IMP UTIL Incorrect focus when Alt key is pressed
inside a dialog.
------------------------------------------------------------------------
QUAL-IMP UTIL /Xc should not generate any command line
include paths.
------------------------------------------------------------------------
QUAL-IMP C++FE The /Ms option is changing the linkage of
internally declared compiler functions.
This can result in runtime traps when using
memory management or C++ exception handling.
------------------------------------------------------------------------
QUAL-IMP C++FE The linker fails when using /ND to rename
a data segment. The compiler is generating
bad code for partially initialized
structures.
------------------------------------------------------------------------
QUAL-IMP C++FE Using the compiler options /La or /Lb causes
the compiler to trap.
------------------------------------------------------------------------
PJ09576 C++FE Linking a program that contains templates
causes an invalid error to be generated by
lib.exe. The error is "LIB0007: Error :
Unable to open D:\00900000.6.OBJ"
------------------------------------------------------------------------
PJ09577 C++FE Large program with many template functions,
(more than 1023), traps at runtime.
------------------------------------------------------------------------
PJ09578 C++FE When linking programs that contain templates
and object files that were generated by TASM
the message: "Unknown Record Type {ox..},
offset {..} is generated.
------------------------------------------------------------------------
PJ09579 C++FE The compiler is incorrectly resolving to a
function template instead of using a
previously declared member function.
------------------------------------------------------------------------
PJ09580 C++FE Object destructors are not always run after
a throw statement.
------------------------------------------------------------------------
PJ09581 C++FE Compiling code that uses _Far16 and _Pascal
keywords causes an internal compiler error:
"Exception #C0000005: 30751 occurred in
file .., function .."
------------------------------------------------------------------------
QUAL-IMP C++RT Incorrectly handling exceptions in multiple
runtime environments.
------------------------------------------------------------------------
PJ09568 BE Compiling source files with the same names
may result in conflicting BSS static areas.
------------------------------------------------------------------------
PJ09570 BE Optimization Problem: Incorrect code could be
generated when the result of a comparison is
subtracted from a variable.
------------------------------------------------------------------------
PJ09571 BE The debug info could become corrupted in very
large files which results in only assembler
view being available within IPMD.
------------------------------------------------------------------------
PJ09572 BE Optimization Problem: An internal problem
during loop optimizations could cause a
compile-time exception in the back-end.
------------------------------------------------------------------------
PJ09569 BE Optimization Problem: Incorrect code could be
produced for loops ending with an
if-then-else where the last statement of the
else is a break.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem in
store removal could cause incorrect code.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem
may cause a compile-time exception in the
back-end.
------------------------------------------------------------------------
QUAL-IMP BE Incorrect code generation for _Far16 _Pascal
functions that return floating-point types
could cause a run-time exception.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: An internal problem,
when compiling with /Ti+, may cause incorrect
code generation for breaks within loops.
------------------------------------------------------------------------
QUAL-IMP BE Optimization Problem: The optimizer was
incorrectly folding (0 / x) and (0 % x).
------------------------------------------------------------------------
QUAL-IMP BE Casting a floating-point value to int and
then comparing the result to another int that
was previously cast from a floating-point
value may produce incorrect results.
========================================================================= |
![]() |
||
CTL0009 v. 2.0 (Class Libraries Subcomponent of C Set ++, 10/11/1994, International Business Machines Corporation (IBM)) | Readme/What's new |
CTL0009 is a CSD (set of fixes) for the Class Libraries Subcomponent of
C Set ++ for OS/2, Versions 2.0.
All the Class Library CSDs are cumulative, so you only need to apply the
latest one (i.e. the one with the highest number after the CTL prefix).
The CSD must be applied using the provided installation tools.
CSD CTL0009 is an Informal Corrective Service.
Files in this directory:
------------------------
csdfixes.lst - a text file that lists the fixes that are included in this CSD.
You may want to get this file to see what fixes are included
before getting the actual CSD. This file is included in the
ZIP file, so you do not need to get it if you are getting the
ZIP file.
ctl0009.zip - contains the CSD.
readme.txt - this file
Instructions:
-------------
Get the ZIP file in binary mode.
Unpack the ZIP file into a clean directory.
Install using the provided SERVICE.EXE program.
Contact:
--------
If you have any questions about these files, please contact
cset2@vnet.ibm.com.
This is a Customer Service Disk (CSD) for the IBM C/C++ Tools Product
*************************************************************************
* *
* This CSD contains fixes that apply only to C/C++ Tools Version 2.0. *
* Do not attempt to apply it to C Set++ version 2.1 or to C/C++ Tools *
* Version 2.01. *
* *
*************************************************************************
------------------------------------------------------------------------
This CSD is provided as a set of files. You can choose one of the
following methods of installation:
(1) You can install directly from the directory in which the files are
found with the command:
[d:][path]SERVICE [d:\toolpath]
The CSD directory must be on a drive accessible to your operating
system, including drives on a LAN server.
The d:\toolpath argument is optional. If it is specified, the CSD
installation program assumes that IBM C/C++ Tools is installed in
that directory. If it is not specified, the program searches for
the installed version of IBM C/C++ Tools. If it cannot find the
installed product, the CSD installation program prompts you for a
directory.
The CSD may be installed to any disk accessible to your system,
including LAN drives. The service program itself must run within an
OS/2 2.0 or 2.1 session.
(2) You can create diskettes containing the CSD, and install the CSD
from the diskettes. To create diskettes, make the directory where
the CSD files are located the current directory, then enter:
MAKEDSKT a:
Where a: is the drive letter of the diskette drive where the CSD
diskettes are to be created. CSD diskettes may be 720Kb, 1.44Mb, or
2.88 Mb 3-1/2" diskettes, or 1.2Mb 5-1/4" diskettes. MAKEDSKT
determines diskette size automatically.
To install a CSD from diskettes, invoke the service program as
described in (1) above. The service program will prompt for
additional diskettes as required.
To recreate the CSD on a hard file, use XCOPY to copy the contents
of all the CSD diskettes to a directory on your hard file. For
information on XCOPY, please see the OS/2 online Command Reference.
------------------------------------------------------------------------
The following conditions must exist for CSD installation to be
successful:
(1) You must have already installed the IBM C/C++ Tools product. You
cannot apply the CSD to a beta copy of the product.
(2) The LIBPATH specified in your CONFIG.SYS file must include the
directory '.' (single period). OS/2 2.x puts this in your
LIBPATH by default.
(3) CSD installation uses the file DDE4FIX.DLL to locate the directories
in which the IBM C/C++ Tools are installed. This file was created
when you installed the IBM C/C++ Tools product. If it is not
present, the CSD installation program informs you that the product
is not installed. You must re-install C/C++ Tools before installing
the CSD.
(4) No IBM C/C++ Tools files can be open in any session when you install
the CSD. If the copy of IBM C/C++ Tools being serviced resides on a
LAN drive, you must ensure that no other LAN user has any of these
files open.
------------------------------------------------------------------------
After the CSD installation terminates, the file DDE4FIX.LOG is placed in
the IBM C/C++ Tools base directory. It contains a cumulative log of all
CSD installations to this copy of the product.
This CSD applies fixes to only one of the components of the IBM C/C++
Tools. The components are the compiler, the class libraries, and the
utilities. To maintain the levels for these components separately, the
IBM C/C++ SYSLEVEL file will be split into three files, one for each
component (if this is the first time a CSD is applied).
A list of the fixes contained in this CSD can be found in the file
CSDFIXES.LST. The fixes are cumulative, meaning that this CSD contains
all fixes described in CSDFIXES.LST, even if they were fixed on a prior
CSD.
The complete list of files in this CSD can be found in the file
SERVICE.LST.
------------------------------------------------------------------------
C Set ++ Class Libraries Version 2.0
Fixes List
------------------------------------
*************************************************************************
* *
* This CSD contains fixes that apply only to C/C++ Tools Version 2.0. *
* Do not attempt to apply it to C Set++ version 2.1 or to C/C++ Tools *
* Version 2.01. *
* *
*************************************************************************
=========================================================================
CTL0009 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTL0009
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP UICL Error in IThread::defaultAutoInitPM results in
dfltAutoInitPM unconditionally being set to
IThread::inPMSession().
-------------------------------------------------------------------------
UICL ISpinButton::setValue does not work under WARP
-------------------------------------------------------------------------
QUAL-IMP UICL WARP problem - no scroll bars on IViewPort
-------------------------------------------------------------------------
QUAL-IMP UICL IEntryField ctor fails for spin button child
on WARP
CTL0008 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTL0008
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP CCL Possible memory overlays and stack corruption
when an exception is logged which contains
text longer than 512 characters.
-------------------------------------------------------------------------
=========================================================================
CTL0007 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTL0007
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP UICL IFrameWindow::dismiss causes a trap if there
is not an owner window and not modal.
-------------------------------------------------------------------------
QUAL-IMP UICL IColor::value may not work properly if the
user has modified the logical color table.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiLineEdit::hasSelectedText doesn't
detect a single selected character.
-------------------------------------------------------------------------
QUAL-IMP UICL Improved link time for static link libraries.
-------------------------------------------------------------------------
=========================================================================
CTL0006 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTL0006
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP UICL IContainerControl::scroll and
IContainerControl::scrollToObject do not
work correctly in a non-split details view
or in non-details view with details view
columns inserted.
-------------------------------------------------------------------------
QUAL-IMP UICL A canvas (1) without a child window that can
accept the input focus, (2) with different
parent and woner windows, and (3) either
the client window of a frame or owned by
another canvas could cause the system to hang.
A common way to create this situation is to
add an empty canvas to a view port.
-------------------------------------------------------------------------
QUAL-IMP UICL Help for a notebook tab should be provided
through the IPageHandler::help function.
However, this function was never being called
when the user pressed F1 when on a notebook
tab.
-------------------------------------------------------------------------
QUAL-IMP UICL IWindow::windowWithHandle was being called
within a critical section.
-------------------------------------------------------------------------
PJ14635 UICL Excessive Tracing closes PMPRINTF.EXE
-------------------------------------------------------------------------
PJ14636 UICL Activation not returning to owner after
modeless dialog is dismissed.
-------------------------------------------------------------------------
PJ14638 UICL Turning trace off while in a member function
causes stack overrun in trace formatter.
-------------------------------------------------------------------------
QUAL-IMP UICL Memory leaks in IFont during IFont
destruction.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiLineEdit::hasSelectedText returns true
erroneously.
-------------------------------------------------------------------------
PJ14640 UICL The ICnrCtl::hwnd variable stored in IThread
may be invalid.
-------------------------------------------------------------------------
QUAL-IMP UICL Help, File Dialog, and Font Dialog don't work
with the OS/2 Performance Beta.
-------------------------------------------------------------------------
QUAL-IMP UICL IThread::messageQueue returns HMQ_CURRENT
instead of the actual message queue handle
for the thread.
-------------------------------------------------------------------------
=========================================================================
CTL0005 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTL0005
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP CCL Reduction of generated code size by changing
internal macro expansions.
-------------------------------------------------------------------------
QUAL-IMP CCL Suppress informational warning messages
in Collection Classes via #pragma info usage.
Made Collection Classes independant from
/Sp1 option and #pragma pack usage via
#pragma pack(4) usage in header files.
-------------------------------------------------------------------------
QUAL-IMP CCL Support multiple includes of "isynonym.hpp"
to get independant of include sequence.
-------------------------------------------------------------------------
QUAL-IMP CCL Improved coding example "dskusage" by
changing output sequence from forward to
backward.
-------------------------------------------------------------------------
QUAL-IMP CCL Improved comments in coding example
"DSUR".
-------------------------------------------------------------------------
QUAL-IMP CCL Adjusted expected output in example
"WORDBAG".
-------------------------------------------------------------------------
PJ13362 UICL IString::isLike failing on wildcard search
Error encountered when pattern matching
after * fixed.
-------------------------------------------------------------------------
PJ13363 UICL IStaticText paints disabled text wrong
The static text handler is incorrectly
painting disabled text in the static text
field.
-------------------------------------------------------------------------
PJ13365 UICL No error message for
IHelpWindow::addLibraries
-------------------------------------------------------------------------
QUAL-IMP UICL IContainerObject::deleteRecord modified
to fix memory Leak in the Container.
-------------------------------------------------------------------------
QUAL-IMP UICL Cannot hide objects in the container
-------------------------------------------------------------------------
QUAL-IMP UICL DDEClientConversation Hang on Shutdown
-------------------------------------------------------------------------
QUAL-IMP UICL DDE uses critical sections incorrectly
=========================================================================
CTL0004 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTL0004
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
PJ12170 UICL Acknowledgement from remoteExecute handled
incorrectly in DDE.
-------------------------------------------------------------------------
QUAL-IMP UICL IFont class is missing operator=.
-------------------------------------------------------------------------
QUAL-IMP UICL Memory for the window list is not being
freed when a window is destroyed. A static
member of IMenuHdr is being freed too soon.
-------------------------------------------------------------------------
QUAL-IMP UICL IMultiLineEdit::importFromFile adds one too
many bytes to the mle if the file length is
not a multiple of 1024.
-------------------------------------------------------------------------
QUAL-IMP CCL A number of functions in some header files
are missing inline keywords.
-------------------------------------------------------------------------
QUAL-IMP CCL The compare and hash functions in <istdops.h>
cannot be passed a pointer to a constant
string.
=========================================================================
CTL0003 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTL0003
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
PJ11721 UICL IMenuHandler::menuEnded() was accessing
memory that was no longer valid.
-------------------------------------------------------------------------
QUAL-IMP UICL When creating a textCursor for a container in
details view, the cursor does not work
properly for all the text columns.
=========================================================================
CTL0002 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTL0002 and
later corrective service
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
PJ11045 UICL IStaticText::setColor() generates solid
colors for the background when a pattern
color is specified.
-------------------------------------------------------------------------
PJ11046 UICL Application hangs occur intermittently with a
multi-threaded application using IThread.
-------------------------------------------------------------------------
PJ10748 UICL The layout algorithm in IMultiCellCanvas
intermittently failed to allocate all
available pels to the columns.
-------------------------------------------------------------------------
PJ10750 UICL IListBox::itemText() and
IComboBox::itemText() lose the last character
of a DBCS string.
-------------------------------------------------------------------------
PJ10751 UICL When a ISplitCanvas is sized very small, the
columns are not allocated in their original
proportions.
-------------------------------------------------------------------------
PJ10825 UICL Using IHelpWindow::setHelpTable() to load a
help table from a DLL results in an exception
being thrown.
-------------------------------------------------------------------------
QUAL-IMP UICL Closing an IFrameWindow using ALT-F4 can
cause all windows to close and the
application to end.
-------------------------------------------------------------------------
QUAL-IMP UICL The container window is not being refreshed
correctly by IContainerControl:
addObjectAfter().
-------------------------------------------------------------------------
QUAL-IMP UICL Moving a leg of the tree in the tree view of
IContainerControl to a new parent causes a
trap.
-------------------------------------------------------------------------
QUAL-IMP UICL Editing the container title with
editContainerTitle() or a column heading in
details view with editColumnTitle() causes an
exception to be thrown.
-------------------------------------------------------------------------
QUAL-IMP UICL The default push button on a frame extension
of an IFrameWindow doesn't work correctly.
-------------------------------------------------------------------------
QUAL-IMP UICL Unable to give an entry field on a canvas on
a notebook page the focus.
-------------------------------------------------------------------------
QUAL-IMP UICL IWindow: setAutoDestroyObject() doesn't work
in certain scenarios.
-------------------------------------------------------------------------
QUAL-IMP UICL DBCS translate results in a trap.
-------------------------------------------------------------------------
QUAL-IMP UICL DBCS status area not displaying properly.
=========================================================================
CTL0001 is informal Corrective Service.
The following fixes are provided in Class Libraries CS CTL0001 and
later corrective service
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP UICL IBitmapControl: Allows setText() to put text
on IBitmapControls, independent of which
constructor was used.
-------------------------------------------------------------------------
QUAL-IMP UICL ICanvas: fixupChildren()
Corrected the loss of the default push
buttons, after a font is dropped on a
canvas window.
-------------------------------------------------------------------------
PJ09582 UICL IComboBox: locateText
Changed default value for index to -1
instead, of 0.
-------------------------------------------------------------------------
PJ09583 UICL IDate: isValid
The overloaded version of this function that
accepts year + day has been fixed.
-------------------------------------------------------------------------
PJ09584 UICL IDDETopicServer:
Changed to allow conversations with
non-standard applications that do not
correctly set MRESULT to TRUE when processing
WM_DDE_INITIATEACK message.
-------------------------------------------------------------------------
PJ09585 UICL IEntryField: enable()
Fixed bug that causes a read-write entry
field to be read-only if the disable()
function is called on a disabled entry field.
-------------------------------------------------------------------------
QUAL-IMP UICL IEntryField: color
Fixed bug that caused the color of the
background to be returned when querying the
foreground color.
-------------------------------------------------------------------------
PJ09586 UICL IFileDialogHandler: filter(), validate()
A fix has been made so that a call to
setResult() inside of filter() or validate()
can be used to indicate whether the fileName
is OK to process. Use setResult(false) if
the file is not acceptable for further
processing.
-------------------------------------------------------------------------
PJ09587 UICL IFileDialogHandler: filterName(),
validateName()
There are new functions that were added as
easier ways of filtering and validating. See
IFILEHDR.HPP for complete details.
-------------------------------------------------------------------------
PJ09588 UICL IHelpEvent: controlId()
Fixed this function to return the correct
control ID value.
-------------------------------------------------------------------------
PJ09589 UICL IHelpHandler: dispatchHandlerEvent()
This has been fixed to properly process the
the HM_NOTIFY help notification. The
following virtual functions were not being
called properly: controlSelect(),
showCoverage(), showPage(), swapPage(),
showIndex(), showContents(), showHistory(),
openLibrary(), showSearchList().
-------------------------------------------------------------------------
QUAL-IMP UICL IKeyboardEvent: scanCode()
Corrected a check resulting in an erroneous
assertion being thrown on key releases.
-------------------------------------------------------------------------
QUAL-IMP UICL IMenu: setConditionalCascade()
New function that allows you to make an
exiting cascade submenu into a conditional
cascade. It requires that the default item
be specified.
-------------------------------------------------------------------------
QUAL-IMP UICL IMenu: removeConditionalCascade()
New function for undoing the effects of
setConditionalCascade().
-------------------------------------------------------------------------
PJ09590 UICL IMessageBox: show()
Fixed bug that caused an exception to be
thrown when trying to show text loaded from a
resource (.rc) file. The message text can be
a message or string resource. Added
description of styles generated by each
severity and a description of the aHelpId
argument.
-------------------------------------------------------------------------
PJ09591 UICL IMessageBox:
Fixed bug so that help is now displayed when
the Help button is selected if a help window
has been associated with the message box's
owner.
-------------------------------------------------------------------------
PJ09592 UICL IMultiLineEdit: setText()
Removed the default value for bufferSize.
This will remove the compiler ambiguity
error.
-------------------------------------------------------------------------
QUAL-IMP UICL ISlider: setTicks()
Fixed bug that prevented ticks from being set
on the slider scales except on the
constructor.
-------------------------------------------------------------------------
QUAL-IMP UICL ISlider: color()
Fixed bug that caused the wrong color to be
returned for the background of the slider.
-------------------------------------------------------------------------
QUAL-IMP UICL ISpinButton: addAsLast()
Fixed bug so that the item is added,
previously the function did nothing.
-------------------------------------------------------------------------
QUAL-IMP UICL ISpinButton: enable()
Fixed bug that caused th entry field to be
cleared, and an exception to be thrown for
numeric spin buttons.
-------------------------------------------------------------------------
QUAL-IMP UICL ISpinButton: replaceAt()
Fixed a bug that caused the wrong item to be
replaced.
-------------------------------------------------------------------------
QUAL-IMP UICL ISpinButton: setToNext()/setToLast()/
setToFirst()/setToPrevious()
Fixed bugs that prevented a subsequent
spinTo() from working correctly, and
intermittently caused setToFirst() to set
the cursor to an item other than the first.
-------------------------------------------------------------------------
QUAL-IMP UICL ISpinButton: setInputType()
Fixed a bug that caused a 0 to be displayed
when a numeric spin button was changed to
alphanumeric.
-------------------------------------------------------------------------
QUAL-IMP UICL ISplitCanvas: Dragging Split Bar
Fixed a bug that caused the split bar to jump
to a location other than where it was dropped
This only occurred on the first drop of a
split bar.
-------------------------------------------------------------------------
PJ09593 UICL IString: d2x
Fixed bug that resulted in 7FFFFFFF being
returned when this function was applied to
IStrings that held the ASCII representation
of large unsigned numbers (for example,
Ox81234567).
-------------------------------------------------------------------------
PJ09594 UICL ISystemMenu: Destruction of underlying PM
system menu. AN ISystemMenu object will no
longer destroy the underlying PM system menu
when the object goes out of scope or is
otherwise deleted. You can now create an
ISystemMenu on the stack.
-------------------------------------------------------------------------
QUAL-IMP UICL Sample Program: DDE Client
Fixed a bug that caused the program to ABEND
under certain conditions.
-------------------------------------------------------------------------
QUAL-IMP UICL Sample Program: Hello5 & Hello6
Corrected the spelling for the Extended help
menu.
========================================================================= |
![]() |
||
CTU0003 v. 2.x (Utilities Subcomponent of C Set, 28/10/1994, International Business Machines Corporation (IBM)) | Readme/What's new |
CTU0003 is a CSD (set of fixes) for the Utilities Subcomponent of
C Set ++ for OS/2, Versions 2.0 and 2.1.
All the Utilities CSDs are cumulative, so you only need to apply the
latest one (i.e. the one with the highest number after the CTU prefix).
The CSD must be applied using the provided installation tools.
CSD CTU0003 is an Informal Corrective Service.
Files in this directory:
------------------------
csdfixes.lst - a text file that lists the fixes that are included in this CSD.
You may want to get this file to see what fixes are included
before getting the actual CSD. This file is included in the
ZIP file, so you do not need to get it if you are getting the
ZIP file.
ctu0003.zip - contains the CSD.
readme.txt - this file
Instructions:
-------------
Get the ZIP file in binary mode.
Unpack the ZIP file into a clean directory.
Install using the provided SERVICE.EXE program.
Contact:
--------
If you have any questions about these files, please contact
cset2@vnet.ibm.com.
This is a Customer Service Disk (CSD) for the IBM C/C++ Tools Product
*************************************************************************
* *
* This CSD contains fixes that are common to C/C++ Tools Version 2.0 *
* and Version 2.01. Notwithstanding the version statements *
* contained in the files of this CSD this is not an upgrade of *
* Version 2.0 to Version 2.01. *
* *
* The code to which you have access is determined by the version of *
* the software to which you are licensed. *
* *
*************************************************************************
------------------ This CSD is the minimum CSD level ------------------
------------------ that is supported on OS/2 Warp ------------------
------------------------------------------------------------------------
This CSD is provided as a set of files. You can choose one of the
following methods of installation:
(1) You can install directly from the directory in which the files are
found with the command:
[d:][path]SERVICE [d:\toolpath]
The CSD directory must be on a drive accessible to your operating
system, including drives on a LAN server.
The d:\toolpath argument is optional. If it is specified, the CSD
installation program assumes that IBM C/C++ Tools is installed in
that directory. If it is not specified, the program searches for
the installed version of IBM C/C++ Tools. If it cannot find the
installed product, the CSD installation program prompts you for a
directory.
The CSD may be installed to any disk accessible to your system,
including LAN drives. The service program itself must run within an
OS/2 2.0 or 2.1 session.
(2) You can create diskettes containing the CSD, and install the CSD
from the diskettes. To create diskettes, make the directory where
the CSD files are located the current directory, then enter:
MAKEDSKT a:
Where a: is the drive letter of the diskette drive where the CSD
diskettes are to be created. CSD diskettes may be 720Kb, 1.44Mb, or
2.88 Mb 3-1/2" diskettes, or 1.2Mb 5-1/4" diskettes. MAKEDSKT
determines diskette size automatically.
To install a CSD from diskettes, invoke the service program as
described in (1) above. The service program will prompt for
additional diskettes as required.
To recreate the CSD on a hard file, use XCOPY to copy the contents
of all the CSD diskettes to a directory on your hard file. For
information on XCOPY, please see the OS/2 online Command Reference.
------------------------------------------------------------------------
The following conditions must exist for CSD installation to be
successful:
(1) You must have already installed the IBM C/C++ Tools product. You
cannot apply the CSD to a beta copy of the product.
(2) The LIBPATH specified in your CONFIG.SYS file must include the
directory '.' (single period). OS/2 2.x puts this in your
LIBPATH by default.
(3) CSD installation uses the file DDE4FIX.DLL to locate the directories
in which the IBM C/C++ Tools are installed. This file was created
when you installed the IBM C/C++ Tools product. If it is not
present, the CSD installation program informs you that the product
is not installed. You must re-install C/C++ Tools before installing
the CSD.
(4) No IBM C/C++ Tools files can be open in any session when you install
the CSD. If the copy of IBM C/C++ Tools being serviced resides on a
LAN drive, you must ensure that no other LAN user has any of these
files open.
------------------------------------------------------------------------
After the CSD installation terminates, the file DDE4FIX.LOG is placed in
the IBM C/C++ Tools base directory. It contains a cumulative log of all
CSD installations to this copy of the product.
This CSD applies fixes to only one of the components of the IBM C/C++
Tools. The components are the compiler, the class libraries, and the
utilities. To maintain the levels for these components separately, the
IBM C/C++ SYSLEVEL file will be split into three files, one for each
component (if this is the first time a CSD is applied).
A list of the fixes contained in this CSD can be found in the file
CSDFIXES.LST. The fixes are cumulative, meaning that this CSD contains
all fixes described in CSDFIXES.LST, even if they were fixed on a prior
CSD.
The complete list of files in this CSD can be found in the file
SERVICE.LST.
------------------------------------------------------------------------
C Set ++ Utilities Version 2.0
Fixes List
------------------------------
*************************************************************************
* *
* This CSD contains fixes that are common to C/C++ Tools Version 2.0 *
* and Version 2.01. Notwithstanding the versions statements *
* contained in the files of this CSD this is not an upgrade of *
* Version 2.0 to Version 2.01. *
* *
* The code to which you have access is determined by the version of *
* the software to which you are licensed. *
* *
*************************************************************************
=========================================================================
CTU0003 is informal Corrective Service.
------------------ This CSD is the minimum CSD level ------------------
------------------ that is supported on OS/2 Warp ------------------
The following fixes are provided in Utility CS CTU0003
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP IPMD Updates for debugging 16 bit applications
-------------------------------------------------------------------------
PJ15341 IPMD Display classes containing ENUMs
-------------------------------------------------------------------------
PJ15339 IPMD Display classes inherited from null (empty)
base classes
-------------------------------------------------------------------------
QUAL-IMP IPMD Reduce font requirements
-------------------------------------------------------------------------
QUAL-IMP IPMD Improve view for included code if displayed
before the main source has been viewed
-------------------------------------------------------------------------
QUAL-IMP IPMD Fix OS/2 Warp hang when resizing the source
window
-------------------------------------------------------------------------
QUAL-IMP EXTRA Corrected print problems to HP type printers
-------------------------------------------------------------------------
QUAL-IMP EXTRA Possible internal memory allocation bug
-------------------------------------------------------------------------
QUAL-IMP EXTRA Long string names in Call Graph display
-------------------------------------------------------------------------
QUAL-IMP EXTRA Statistics now shows hugh trace files
-------------------------------------------------------------------------
QUAL-IMP EXTRA User events shown on the correct thread
-------------------------------------------------------------------------
QUAL-IMP EXTRA DBCS window display problem
-------------------------------------------------------------------------
QUAL-IMP EXTRA Triggers and _DOSCALL.DLL now work correctly
-------------------------------------------------------------------------
QUAL-IMP BROWSER Browser fails to terminate properly on
OS/2 Warp
-------------------------------------------------------------------------
=========================================================================
CTU0002 is informal Corrective Service.
The following fixes are provided in Utility CS CTU0002
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP BROWSER Modifications to tutorial for installations
on a different location other than the
default location.
-------------------------------------------------------------------------
QUAL-IMP BROWSER Tutorial will not load when the browser is
installed in a directory with a plus (+) sign
(E.G. C:\IBMC++).
-------------------------------------------------------------------------
QUAL-IMP BROWSER Intermittently hangs the PM shell.
-------------------------------------------------------------------------
QUAL-IMP BROWSER Hangs after closing due to DDE4NARC thread
still active
-------------------------------------------------------------------------
QUAL-IMP BROWSER DDE4NARC API error during a graph window
search with a program that contains no
class inheritance.
-------------------------------------------------------------------------
QUAL-IMP IPMD Fix several potential memory leak problems
-------------------------------------------------------------------------
QUAL-IMP IPMD DBCS updates
-------------------------------------------------------------------------
PJ09240 IPMD This is the debugger part of the OS2KRNL
fix for the PM resource interlock problem.
=========================================================================
CTU0001 is informal Corrective Service.
The following fixes are provided in Utility CS CTU0001 and later CSs
*************************************************************************
FIX/APAR COMPONENT PROBLEM DESCRIPTION
*************************************************************************
QUAL-IMP Extra A buffer used to hold certain exception
messages had a length of 0, causing the
program to abend. Buffer now has a
length.
-------------------------------------------------------------------------
QUAL-IMP Extra Zooming in and out on a multi-segmented
arc would cause the diagram not to be
properly centered. The fix was to modify
the center of the arc calculation to be
correct.
-------------------------------------------------------------------------
QUAL-IMP Extra The stack size of the secondary thread has
been increased to prevent stack overflow
on OS/2 2.1.
-------------------------------------------------------------------------
QUAL-IMP Extra Due to a rounding error in calculating scale
factors, all events may not be visible at a
very large scale. An adjustment was made
to the calculation to allow all events to
be visible.
-------------------------------------------------------------------------
QUAL-IMP IPMD DLLs were not being found because the LIBPATH
search was case sensitive. It is now not case
sensitive. Also, IPMD was ignoring a REM
keyword before a LIBPATH statement. It now
correctly ignores LIBPATH statements that
have been "remarked out".
-------------------------------------------------------------------------
QUAL-IMP IPMD The search for a correct DLL name had been
limited to 6 drives for the bootable drive.
-------------------------------------------------------------------------
QUAL-IMP IPMD There were some errors in the help text for
enumerated types.
------------------------------------------------------------------------
QUAL-IMP IPMD In the window characteristics window, when
displaying addresses in 16:16 format, the
segment and offset were reversed.
------------------------------------------------------------------------
QUAL-IMP IPMD When attempting to debug an application for
which there was no debug data, the Debug
Session Controls window displayed no
components.
------------------------------------------------------------------------
QUAL-IMP IPMD It was not possible to display variables that
were in comments at the bottom of the mixed
view.
------------------------------------------------------------------------
QUAL-IMP IPMD IPMD was not restoring a source line
breakpoint in a DLL that was loaded/unloaded
then reloaded.
------------------------------------------------------------------------
QUAL-IMP IPMD A fatal debugger error occurred if a user
double clicked on a non-executable line in
a template.
------------------------------------------------------------------------
QUAL-IMP IPMD Strings were not viewable if a 16-bit far
pointer was used.
------------------------------------------------------------------------
QUAL-IMP IPMD It was possible for the debugger to crash
when attempting to monitor an expression
involving the not-equal operator and a
pointer expression.
------------------------------------------------------------------------
QUAL-IMP IPMD If a class contained a variable of simple
type (e.g. integer), it was not possible to
change the value of the variable.
------------------------------------------------------------------------
QUAL-IMP IPMD There were some minor problems with the IPMD
online tutorial.
------------------------------------------------------------------------
QUAL-IMP IPMD In a 16-bit program, the DS register was
being altered by a jump to location.
------------------------------------------------------------------------
QUAL-IMP IPMD In the breakpoints dialog, the text in the
tabs was incorrectly formed.
------------------------------------------------------------------------
QUAL-IMP IPMD If the help text was accessed after using the
tutorial, it was possible to lock the system.
------------------------------------------------------------------------
QUAL-IMP IPMD If an application that creates a send hook
was debugged in synchronous mode, it was
possible to crash the debugger if the
creation of the hook was stepped over.
------------------------------------------------------------------------
QUAL-IMP IPMD In a C++ application, it was taking an
inordinate amount of time to display a
variable.
------------------------------------------------------------------------
************************************************************************* |
![]() |
||
C Set ++ Demo v. 4.1 (DOS VDM, 9/8/1993, International Business Machines Corporation (IBM)) | Readme/What's new |
ReadMe Notes for IBM C Set ++ Demo Disk
---------------------------------------------------
Version 4.1 9 Aug 1993
HARDWARE REQUIREMENTS:
---------------------------------------------------
IBM PC,XT,AT,286,386,486,PS/2 or compatible
VGA graphics adapter
2.9 MB free space on hard disk
(Sound Blaster sound card optional)
---------------------------------------------------
This demo runs under DOS 3.3 or higher and
OS/2 2.0 or higher. Do not run from Windows.
To view the demo, you must install it onto your
hard disk. There are two separate install
files, one for DOS and one for OS/2. (See
installation notes below.)
SOUND
---------------------------------------------------
The demo's sound track may be played through
a Sound Blaster card (DOS and OS/2), or through
your PC's internal clicker speaker (DOS only).
Because the demo uses special DMA drivers to play
sound in the OS/2 environment, only Creative Labs
Sound Blaster cards are fully supported. Some
otherwise compatible sound cards will not function
with this driver and are not recognized by the demo.
For the demo to detect your Sound Blaster card,
your AUTOEXEC.BAT file must be correctly configured
with a SET BLASTER= environment variable. See your
Sound Blaster manual, or call Creative Labs at
408-428-6622 for technical assistance.
Sound is available through the PC's clicker speaker
when running from native DOS only. OS/2 users with
dual boot setups may want to switch over to their
native DOS boot to hear the demo's sound track.
(Refer to your OS/2 Installation manual for
instructions.)
DOS INSTALLATION:
---------------------------------------------------
1. Insert the disk into a floppy drive.
2. Change the DOS prompt to that drive (A: or B:).
Example: Type A: and press [ENTER]
3. Type INSTALL, and press [ENTER].
4. Follow the on-screen instructions.
When the installation is complete, type DEMO and
press [ENTER] to start the demo.
NOTE: Microsoft Windows has an adverse effect on
the demo's animation timing. For best results,
run the demo from DOS, not from Windows or a DOS
shell running under Windows.
OS/2 INSTALLATION:
---------------------------------------------------
1. Insert the disk into a floppy drive.
2. Open the floppy icon view for that drive.
Example: Double-click on the Drives icon in
the OS/2 System folder. Then double-
click on the drive icon (A: or B:)
that contains the demo install floppy.
3. Double-click on the OS2INST.CMD icon.
4. Follow the on-screen instructions.
When the installation is complete, double-click on
the Magic of C Set ++ icon that was added to your
desktop to start the demo.
NOTE: Once the demo is finished, if you answer yes
to the "Erase demo files from disk?" question, you
will also need to manually delete the Magic of
C Set ++ icon from your desktop. (Right-click on the
icon and select Delete from the pop-up menu). Also
delete the \CSETDEMO directory from your hard disk.
### End of ReadMe file ###
|
![]() |
![]() |
|
The Magic of C Set ++ 4.1 Recorded Demo v. 4.1 (9/8/1993, International Business Machines Corporation (IBM)) | ||
![]() |
This work is licensed under a Creative Commons Attribution 4.0 International License(link is external).
Add new comment