IBM C Set++

Version: 
2.1
Release date: 
Friday, 22 October, 1993

Categories:

License:

Interface:

IBM C Set++ compiler.

This software is distributed as compressed package. You have to download and manually install it; if prerequisites are required, you will have to manually install them too.

Manual installation

Self-installer package and ZIP:

  • download the ZIP package to temporary directory and unpack it to destination folder.

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. =========================================================================
 service.boulder.ibm.com/ps/products/csetpp/fixes/v20/ctc0012/ctc0012.zip
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. =========================================================================
 service.boulder.ibm.com/ps/products/csetpp/fixes/v21/ctc0012/ctc0012.zip
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.
 service.boulder.ibm.com/ps/products/csetpp/fixes/v20/linkfx/linkfx.zip
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. =========================================================================
 service.boulder.ibm.com/ps/products/csetpp/fixes/v21/ctm0010/ctm0010.zip
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
 service.boulder.ibm.com/ps/products/csetpp/fixes/v21/wf21_3/wf21_3.zip
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. =========================================================================
 service.boulder.ibm.com/ps/products/csetpp/fixes/v20/ctc0011/ctc0011.zip
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. =========================================================================
 service.boulder.ibm.com/ps/products/csetpp/fixes/v20/ctl0009/ctl0009.zip
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. ------------------------------------------------------------------------ *************************************************************************
 service.boulder.ibm.com/ps/products/csetpp/fixes/v20/ctu0003/ctu0003.zip
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 ###
 ecsoft2.org/it/system/files/repository/csetdemo.zip  local copy
The Magic of C Set ++ 4.1 Recorded Demo v. 4.1 (9/8/1993, International Business Machines Corporation (IBM))
 www.hobbesarchive.com/Hobbes/pub/os2/info/marketing/CSETDemo_4-1.zip(link is external)
Record updated last time on: 03/07/2025 - 06:16

Translate to...

Add new comment