home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
OS/2 Shareware BBS: 29 Fixes_o
/
29-Fixes_o.zip
/
ctc308.lst
< prev
next >
Wrap
File List
|
1997-08-18
|
80KB
|
1,625 lines
****************************************************************************
* VisualAge C++ For OS/2 Version 3.0 *
* Compiler Subcomponent *
* Fixes List *
****************************************************************************
* *
* This fixpak contains fixes that apply only to VisualAge C++ Version 3.0 *
* The fixpak must be applied using the provided installation tools. *
* *
****************************************************************************
* Fixpak CTC308 is Informal Corrective Service *
****************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
----------------------------------------------------------------------------
AP 67264 BE Fix an optimization problem with invalid calculation
of the bitfield.
AP 68203 BE With /Ti+, bad linnum record is generated in the
object file. This causes the debug information to
be presented incorrectly in the debugger's source
view.
AP 69639 BE In ring 0, SS is incorrectly associated for an
indirect load where it should not be.
AP 69641 BE In ring 0, set and restore ES correctly with respect
to string operations in scheduler.
AP 69645 BE Generate assembler correctly for source files with unix
text format.
AP 69715 BE Volatile qualifier ignored during loop optimization.
AP 70033 BE Inlining of _xchg() causes a run time trap in certain
circumstances.
AP 71552 BE Fix an optimization bug - when floating point
parameters are used in IString parameters in ofstream,
the output stream may contain incorrect output.
AP 71779 BE With smart linking, the jump instruction in the prolog
code is wrong.
AP 71788 BE Prevent preloading a NaN when initializing floating
point registers in the loop entry.
AP 71948 BE Floating point parameters used in the conditionals in
multiple simple if-then-else statements cause compiler
to trap.
AP 72057 BE Fix an incorrect inlining for fabs() when converting
a long double precision to double.
AP 72180 BE Internal compiler error when there is a floating point
store in the last statement of a fall-through case
in switch statement.
AP 72336 BE Fix an optimization problem with nested ternery
expressions being used in an assignment statement.
AP 72483 BE A floating point parameter may get clobbered in
case where it is used in a loop.
AP 72586 BE Fix an bitfield optimization problem that would
cause incorrect sizing of the local stack.
AP 72763 BE Improve ths local stack usage when many ternery
expressions are used as function parameters.
AP 71339 BE An assignment value made within relational expression
should be stored back to memory after the relational
expression.
AP 74468 BE If the last function call before return has callee
cleanup convention, the caller may trap at the return.
AP 75056 BE Fix a particular instance where a mod expression used
as a conditional expression generates incorrect result.
AP 75172 BE Fix an incorrect increment problem in relational
expressions.
AP 77025 BE Generate correct code for stack probe when passing
structure parameter in functions.
AP 77326 BE Correct a scheduler problem with _inp() and _outp().
AP 78219 BE Fix a case where /Oi+ will cause the compiler to
trap.
AP 80033 BE With /Gv, make sure we set and restore DS properly
in instruction scheduler.
AP 80507 BE A conditional expression is incorrectly evaluated in
a simple if-then-else statement.
AP 80694 BE Placing uninitialized structures in BSS segment
rather than DATA32 segment.
AP 63115 C++FE A combination of redefining a compiler reserved macro
(ie. -D__cplusplus) and passing an invalid argument
to a function causes a GPF in the compiler.
AP 70180 C++FE Wrong Virtual function could be call when the function
is overriden in more than one of the paths to the virtual
base class.
AP 71191 C++FE The destructor for the temporary used to hold the result
of a conditional expression (the result of the conditional
expression is a class with a destructor) can end up being
called too often because of unnecesary calls to it within
any or all of the three parts of the conditional
expression.
AP 71949 C++FE Occasional C++ compiler crashes are observed when
building C++ source containing templates.
AP 79112 C++FE See AP 71191.
QI 67417 C++FE If the /Ly+ option is used, a General Protection
Fault may occur when generating the cross-reference
lising if a variable in the source has a type whose
name is more than 450 characters long.
AP 65713 CFE The C compiler would incorrectly mark some
typedefs as seg16 after a #pragma seg16.
AP 66766 CFE Fixed the problem of unexpected compiler error when
using /Wenu option for some programs with switch
statements.
AP 67956 CFE Missing error message for extraneous semi-colon at
file scope.
AP 71045 CFE When a function call is evaluated, the side effects of
the evaluation of the function designator do not appear
until after the actual function call.
AP 72220 CFE With /Tn option on, the C compiler gave
insufficient information to the debugger
causing it to sometimes start at the wrong
line or not be able to show the source view.
AP 72580 CFE The C compiler would sometimes give an internal
compiler error when a precompiled header contained
a "#pragma library" directive.
AP 76998 CFE With the /Wtrd option on, the C compiler gave
an informational message about casts between
void* and other pointer types, stating that
they were not compatible. The C compiler will
now only give the message for such casts if
qualifiers are being cast away.
AP 78190 CFE If a source file only contained #include statements
and precompiled headers were used, the C compiler
would incorrectly warn that the source file was
empty.
QI 62544 CFE Internal compiler error when /Fi, /Si and /Nd
options are used together.
QI 69632 CFE When compiling with /Gr option, message EDC0506
was missing when address of automatic variable
was taken in function arguments or as part of
an initialization.
QI 69779 CFE The C compiler would sometimes give an internal
compiler error when the _Packed qualifier was
incorrectly used on something other than a struct
or a union.
AP 74511 ICC Corrected the problem that on some file systems,
tempinc objects were not passed to the linker.
AP 71692 ICL Compiling with /Olp for a big source file will trap
the intermediate code linker.
AP 71759 ICL Pragma handler is ignored.
AP 54724 ILINK Under certain circumstances the linker is not able
to open a file handle to access its message file.
A sys3018 "message file not found" message is generated
from within DosGetMessage().
QI 72756 ILINK When an application was linked with debug
packing and debug packing overflow occurred, parts
of the generated program could not be debugged.
In some cases this can cause the debugger
to trap.
AP 42834 RT Floating-point numbers are not formatted correctly
by the printf family of functions, including cout.
The problem is a loss of precision which occurs when
the format specification calls for many digits of
precision (eg. 24 digits).
AP 51230 RT Using _putenv() to unset a variable leaves garbage
in the environment. For instance, _putenv("xyz")
does not remove xyz from environment.
AP 69338 RT The locale for German in Germany (de_de) has the
wrong abbreviation for Thursday. It should be
"Do" instead of "Don".
AP 69628 RT The va_start and va_end macros should return (void).
AP 70116 RT The iconv function fails to convert a string with a
length over 2048 bytes, and returns an errno of
E2BIG.
AP 70690 RT The printf functions return incorrect count when a
null string is formatted using "%s" specifier. The
output has the string "(null)", but the returned
count does not account for these 6 characters.
AP 71422 RT The getenv and putenv functions are case sensitive.
AP 72452 RT The min() and max() macros in <stdlib.h> are not
properly protected with an #ifndef block. If the
compilation unit has a different definition of min()
and max(), the compile will fail.
AP 72949 RT Whenever a DLL built with VisualAge C++ is loaded
and freed by a program not built with VisualAge C++,
the runtime will leak 64K of address space.
AP 74782 RT _assert failure on _udestroy.
Application code should call _uclose before calling
_udestroy, regardless of whether the heap was opened
with _ucreate or _uopen. In short, each process
should call _uclose for each call to _ucreate or
_uopen.
The other problem is applicable to Windows only.
If the process that created the heap dies, the
processes that have it open are unable to
continue accsessing it, and other processes are
unable to open it. The fix introduces two
incompatibilities between different levels of
FixPacks:
1. If two executables (.exe or .dll) statically link
to the different levels of FixPacks (with and
without the fix), memory blocks should not be freed
across them, ie. application code should not
allocate block in one dll and free it in another.
2. The runtime invades the name space of the
semaphores and file mappings in the system if shared
heaps are used. All name that begin with the string
"vacpp" should be consider as reserved in this case.
AP 79453 RT The iconv function no longer supports xlt tables.
This is incompatible with the iconv support that
existed on OS/2 prior to CTC305. This is not
applicable on Windows, since this support has never
been provided by VisualAge C++ for Windows.
AP 80464 RT The setlocale function does not recognize code page
950 for Traditional Chinese (Taiwan).
QI 51396 RT The strptime function will fail to parse the weekday
name or the month name for locales where names have
common prefixes. For example, some countries use
Roman numerals as abbreviations for the month names.
The first three months are "I", "II", and "III", but
parsing stops after matching the first 'I'.
QI 57090 RT The strptime() function is unable to parse Japanese
dates that use abbreviations for the month name.
QI 57142 RT The strftime and wcsftime functions give incorrect
results for dates that are formatted using the era
specifiers ("%Ec", "%EC", "%Ey", and "%EY"). This
is a problem only when using a locale for Japan.
QI 63750 RT The strftime and wcsftime functions give incorrect
results for dates that are formatted using the era
specifiers "%Ec" and "%EY" together in the format
string. When using a locale for Japan, the problem
occurs for "%Ec" alone because the locale itself
uses "%EY" in the expansion of "%Ec".
QI 70434 RT Unable to open converters for code pages 1363 and
1386. Entries for these tables are missing from
iconv.lst.
QI 70750 RT A call to debug_malloc to get storage off a heap
that does not have available storage to satisfy the
request, and the heap cannot be expanded, may result
in runtime trap.
QI 72781 RT In <stdarg.h>, va_start is defined as:
#define va_start(ap, last) ap = __vastart(last);
The comma at the end will cause problems when used
in certain contexts, such as for loop or a comma
expression.
QI 74553 RT The fgetws function leaves a semaphore in the locked
state. When fgetws reaches EOF, it returns without
unlocking the semaphore. The next I/O operation
(eg. fclose) on that file will hang the thread.
****************************************************************************
Fixpak CTC306 is Informal Corrective Service *
****************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-------------------------------------------------------------------------
AP 65346 BE BE sometimes traps if the inner loop is evaluated
such that the outer loop is folded away completely.
AP 66201 BE In rare situations a variable is evaluated incorrectly
after an array element is accessed if the variable is
is postincremented in the array index.
AP 67228 BE BE optimizes incorrectly and may generate incorrect
code if the following pattern is in the source:
c = ...;
c = ... (in terms of c) ...;
This occurs in rare instances as the BE incorrectly
applies common subexpression elimination to such
cases.
AP 67253 BE Invalid opcode prefix '80' is generated in the object
code for the intel OR/AND/ADD/SUB instruction with
8-bit immediate.
AP 67798 BE Fix defect in BE register assigner where a variable
appears to hold an incorrect value under /O /G5
optimization.
AP 67897 BE Fix internal compiler error in BE if there is text
after a 'return' statement in the souce module.
AP 68491 BE If the last executable statement is a call and is
optimized to a jump under /O+, the stack may get
deleted if this tail call returns a structure type
of 8-bytes or more.
AP 68503 BE Correct a switch optimization problem that causes
BE to generate invalid run time code when falling
through cases and backward 'goto' in the common case
body. An infinite run-time loop or incorrect output
may be the result.
---------------------------------------------------------------------------
AP 64812 C++FE C++ compiler uses a size of 0 when determining the size
6470x.b004 of class member when the member is an instantiation
of a template with the class as a parameter and the
template is a class that only uses the class to declare
a static member.
---------------------------------------------------------------------------
QI 60176 ILINK /EXEPACK may produce executables larger than necessary,
in some cases even larger than the uncompressed image's
size.
----------------------------------------------------------------------------
AP 69878 RT dump_allocated hangs if /tm and /gm options are used.
When run, the dump header is printed, and then the
program hangs. Unable to close the OS/2 window
where the program ran.
****************************************************************************
Fixpak CTC305 is Informal Corrective Service *
****************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-------------------------------------------------------------------------
AP 60438 BE If the user code contains initialization of SEG16
function pointers, the initialization will be
incorrect and the code will trap if the SEG16
functions are called.
AP 60854 BE Fix a loop optimization that leads to incorrect array
reference in loop when, in rare situation, the loop
contains array reference of the form aìi++┘.
AP 61311 BE Fix an addressing problem that can lead to a
run-time trap if the 'break's in a nest of switch
statements leads to a function return.
AP 66019 BE Long compile times for the BE when the BE tries
to inline and optimize code with a chain of
function calls. Problem will appear if /O is used
and /Oi is on.
AP 66200 BE BE optimizer will go into a infinite loop when
compiling code with nested loops.
QI 58085 BE Fix BE problem that causes link time error
'unresolved external __EDCThunkProlog' or BE internal
compiler error when the /O+ switch is used.
QI 63941 BE Fix a run-time trap problem in the try-catch clause
when /O+ is used.
-------------------------------------------------------------------------
AP 43950 CFE Extraneous EDC0415 warnings being generated for
functions declared, but not defined, in the local
file scope.
AP 45272 CFE The C compiler would give an error message when
structures in a ternary expression had the same
type but different qualifiers. The compiler will
now accept this in extended mode and give a
warning in ANSI mode.
AP 45547 CFE Invalid informational EDC0422 message was generated
when a signed integer variable was compared with
unsigned integer constant.
AP 47879 CFE An array definition with a corresponding tentative
declaration was not picking up all the properties
of the tentative declaration when the declaration
type-specifier was a typedef symbol.
AP 49189 CFE If there were multiple declarations for an inline
function, the function would sometimes not be
inlined.
AP 52098 CFE A precompiled header would not be used if one of the
include file paths contained a "./" and the other
did not, even though they resolved to the same file.
AP 52216 CFE The C compiler would sometimes give an internal
compiler error when the /Weff compiler option
was used. The compiler will no longer give this
error.
AP 53275 CFE The C FE was passing the incorrect diagnostic message
level to the BE.
AP 56827 CFE In extended mode, if C a program contains #define's
to define the same macro into different replacements,
the compiler was issuing a warning message stating
that the macro has been redefined, but was not
actually redefining it. The compiler has been
changed to actually redefine the macro to the later
replacement. Also, the #define in the source code
now overrides the /D option in the command line.
AP 62628 CFE Invalid informational EDC0421 message was generated
when signed integer was compared with -32768.
AP 63885 CFE Incorrect message issued under /Wext for unreferenced
external variables.
QI 55438 CFE In a C program, assigning to one member of a union
and using another member of the union to retrieve
the value would sometimes give incorrect results with
optimization.
QI 55692 CFE When compiling certain C programs that includes
typecast into pointer to function, internal
compiler error occurred.
-------------------------------------------------------------------------
QI 43536 ICC When compiling C++ programs with /P turned on, if
the tempinc directory already contained any source
file, ICC compiler driver went into an infinite loop.
QI 47216 ICC When the compiler's messages are re-directed into
a file, messages from different components might be
re-ordered inadvertently.
QI 48884 ICC When compiler is invoked with "icc /O+ /O- a.c",
/Oi and /Os options were turned on accidentally.
-------------------------------------------------------------------------
AP 48385 ILINK When compiling a user-defined _DLL_InitTerm function
with /gl+ and linking it with /optfunc, the error
message "error LNK2030: starting address not code
(use class "CODE") is generated by the linker.
AP 61847 ILINK For OS/2 EXE and DLL files the size limit of the
import procedure table was removed. Also the size
limit of the entry table was expanded from 64K to 1M.
This should reduce linker errors LNK1044 and LNK1074
respectively.
QI 58669 ILINK If a user qualifies the stub file name in their
.def (definitions) file, the linker will report that
the stub file does not exist even if it does exist.
-------------------------------------------------------------------------
AP 42832 RT Input conversion of floating point numbers with 20
or more digits may overflow the maximum precision,
and rather than losing bits on the right (which is
to be expected), the entire number becomes zero.
Loosing one bit of precision with some numbers is
unavoidable.
AP 43377 RT Code page conversions using the iconv() function do
not convert double byte characters correctly.
AP 46604 RT If a compilation unit references _heap_check() and
is linked to the runtime DLL (e.g., using the /Gd+
option with the icc command), there will be an
unresolved reference to __theap_check() at link
time.
AP 48121 RT The C++ compiler incorrectly handles passing objects
by value in a var-arg function. The problem is the
va_start() macro gets the wrong address when the
last non-variable parameter is a class object and
is passed by value.
AP 52345 RT The following code fragment fails if TEMPMEM=ON is
set in the environment.
TFile = tmpfile();
fclose(TFile);
AP 60824 RT Command line arguments with double byte characters
(eg. Kanji characters) may not be parsed correctly.
To use double byte characters in the command line
arguments, you must link your program with
MSETARG.OBJ. If you also use OS/2 global file-name
characters (or wildcard characters) in the
arguments, then you must link with MSETARGV.OBJ.
Both of these object files are included with the
libraries in the LIB directory.
QI 49365 RT If setlocal() is issued for any of the locales
provided with the compiler, then subsequent
invocations of tzset() will have no effect.
QI 59033 RT The strfmon() function does not format the amount
(double) 0.0 when the value of the precision is 0
(eg. %╡#5.0n). The function returns -1 and no value
is set in the output array pointed to by the first
argument.
QI 62091 RT A new library routine _upool() was added to the
runtime that allows an application to specify
a range of object sizes that will cause heap
allocations and frees to perform faster. See
the README for further information regarding this
new feature.
QI 63350 RT %EY format always uses the first era specified in
the locale source file regardless of its range.
QI 64957 RT An additional Japanese locale is provided. This one
is bound to code page 943.
*******************************************************************************
Fixpak CTC304 is Informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-------------------------------------------------------------------------------
QI 35447 ICC Corrected some minor mistakes in the ICC on-line help.
AP 47872 ICC Changed ICC to attempt compiling all files when multiple
source files are specified through a single invocation.
AP 48436 ICC When ICC invokes the linker, the linker options specified
through ICC command line option /B are now appended
(instead of prepended) to the other linker options
generated by ICC.
AP 48869 ICC ICC does not properly handle path names specified with
a mixture of both forward and backward slashes.
AP 54613 ICC ICC was not properly treating tabs as white spaces
on the command line.
QI 36384 CFE The severity level of C compiler message EDC0499 has been
changed from warning to error.
QI 37397 CFE The C compiler was not reading the correct source file
when outputting assembler statements. As a result the
source code did not match the assembler statements in
some cases.
QI 42420 CFE The C front end did not properly handle DBCS characters
in the '#include' path name specifications.
QI 42499 CFE The /Xi compiler option had no effect. If the /Xi
compiler option was on (/Xi+), the compiler would still
search the paths specified in the INCLUDE environment
variable.
QI 43049 CFE When a listing file was produced with the /Lb option, it
did not show the structure maps for unused aggregates.
QI 43779 CFE In some cases the packed version of the aggregates were
shown in the listing file even though the packed versions
were never used.
AP 44084 CFE Suppress the extraneous informational message EDC0451
when /Wtrd option is used.
QI 45691 CFE When C programs are compiled with /Wrea option, suppress
extraneous informational message EDC0520 for programs
containing variable declarations within 'switch' blocks.
QI 45692 CFE Clarified the message text for C compiler message EDC0483.
QI 47688 CFE When compiling programs with /Ti option turned on, if the
program contains multiple typedef's defining the same tag
into different types an internal compiler error occurred.
AP 47793 CFE When a source file, a.c, was used to generate a
precompiled header and then a source file, b.c, used the
previously generated precompiled header, the debug
information in the object file for b.c would indicate
that source file name was "a.c" instead of "b.c". This
caused the debugger to bring up the a.c source while
stepping through code from b.c. This also caused the
name in the assembler listing for b.c to be incorrect.
AP 47944 CFE For some C programs, the compiler would incorrectly
indicate that exported functions were undefined (message
EDC0397).
AP 48456 CFE Message EDC0368 was changed to an error severity from
a warning.
QI 48459 CFE Variables defined after a '#pragma dataseg()' were not
being placed in the correct data segment.
AP 49136 CFE Internal compiler errors when compiling C programs with
initialization of zero-length bitfields.
QI 49670 CFE The date and time shown in the C listing files are now
locale sensitive.
AP 50418 CFE Internal compiler errors when compiling certain C programs
containing function calls with function pointers that are
not prototyped.
AP 50423 CFE Internal compiler error when compiling certain C programs
containing 'offsetof()' and '&=' in the same statement.
AP 51202 CFE Function pointers would be given the default linkage
instead of the user specified linkage if they were
declared at block scope and the /Ti option was on for
C programs.
AP 51351 CFE Changed C compiler to allow mixing function prototypes
with and without linkage keywords.
AP 51400 CFE If a function pointer was used to call a function with
variable arguments, the compiler would pass the arguments
incorrectly to the function.
AP 52186 CFE An enum which could be packed into an unsigned char
and whose maximum value was on the boundary of unsigned
char (255) would be put into a short instead of a char.
Also, enums which could be packed into a signed short
and whose maximum value was on the boundary of signed
short (32767) would be put into an int instead of
a short.
AP 52326 CFE When compiling C programs with /Wgen option, suppress the
extraneous informational messages EDC0438 about "variable
may be used before being set" for external variables.
AP 52398 CFE/C++FE When the preprocessor (for both the C and C++ compiler)
produces #line directives containing file names, the file
names had the same format as the header names. These
file names now contain the proper escape sequences for
string literals. The preprocessor now interprets the
escape sequences,
AP 52498 CFE The C compiler incorrectly gave an error when a 16 bit
variable argument function is prototyped and called.
QI 52703 C++FE The debug information of a Direct-To-SOM class
contains the SOM mangled name.
AP 55237 CFE If a 16 bit function returned a pointer, the compile
would not correctly handle the conversion of the
returned value to a 32 bit pointer. This caused the
return address to be incorrect.
AP 55570 CFE The compiler would abort with an Internal Compiler Error
when there was a post-increment on a pointer in an array
index expression.
QI 56034 CFE Incompatible function redeclarations sometimes cause an
Internal Compiler Error.
QI 57404 CFE Added the missing line number and column number for
C compiler message EDC0221.
AP 58941 CFE If a typedef was used to declare an array or a pointer and
the typedef name had a pragma seg16 associated with it,
the array or the pointer would not be put into the 16-bit
segment as expected.
AP 40798 C++FE The C++ compiler does not fold the IEEE constants
correctly.
AP 55238 C++FE An incorrect browser file is generated for functions
that have exception specifications.
AP 55266 C++FE An incorrect browser file is generated if an expression
is specified in a template-argument-list.
AP 43515 C++FE Informational messages about the comparison of
unsigned integral variables with the constant
zero are incorrect.
AP 30537 C++FE The qualified type pointers (such as "this" pointer
are not converted from a 32 to 16 bit pointers.
AP 32432 C++FE If a template class member function is defined
outside the class definition, and it makes use of
a nested type with a template argument an error
message is issued.
AP 43431 C++FE The option /ly, which produces a cross-reference
table of all variables in the listing file causes
a trap in the compiler.
AP 55702 C++FE The definition of a constructor or a destructor of
a class with an invalid declaration causes a trap
in the compiler.
AP 50631 C++FE An unnamed pointer to a function that is used as an
argument in a function declaration causes a
trap in the compiler.
AP 45467 C++FE The C++ compiler cannot convert "void *" to an
enum type.
AP 49097 C++FE The C++ compiler generates an incorrect #pragma
define during automatic template instantiation,
when the template argument is a scoped enum.
AP 45386 C++FE Precompiled headers do not work with #pragma library.
AP 49284 C++FE An error message is issued for a member function
declaration when a comma is missing from the
argument list.
AP 49293 C++FE C++ traps on 'new' expression when constructor is
ill-formed.
AP 46066 C++FE The compiler does not generate the automatic
templates if there are partially qualified path
names in the include path.
AP 51504 C++FE When a Direct-To-Som is attempted with a #pragma
SOMAttribute is compiled with /Fb+ option the
compiler traps.
AP 57891 C++FE The substitution text in error message EDC3217
is not filled in when the predefined macro
__32BIT__ is redefined.
AP 46077 C++FE The option /Wpar- does not suppress the error
message EDC3126 but the option /Wuse- does.
AP 53485 C++FE The Visual builder generated code sometimes fails with
an "insufficient memory" error message (EDC3088) during
compile.
QI 41936 C++FE Redeclaration of an external function in a nested
block scope of another function creates an invalid
object file if the external function is called
from the nested as well as the main block scope of
the other function.
QI 44351 C++FE Incorrect debug information is generated for
classes that are different instances of a template
when the template argument is used as a base class.
All classes appear to be derived from the template
argument of the first instantiation.
QI 46800 C++FE Anonymous union as the last member of a structure/
class causes initialization problems.
QI 52703 C++FE The debug information of a Direct-To-SOM class
contains the SOM mangled name.
QI 35401 C++FE Intermediate code linker does not work with a
function that has __stdcall linkage.
QI 38816 C++FE The C++ compiler traps when it cannot create
temporary files.
QI 41184 C++FE An illegal template member function definition
causes trap in the C++ compiler.
QI 43373 C++FE The severity level of the message EDC3471 is error
and it should be warning.
QI 43906 C++FE Option /Fc causes a trap in the C++ compiler
if it is used to compiler a program that has
#pragma library.
QI 44115 C++FE The C++ compiler attempts to load corrupt
precompiled header files.
QI 45210 C++FE Precompiled header files do not work with #pragma
map.
QI 48464 C++FE The /Gl option causes a linkage error.
QI 52398 C++FE The #line directive does not contain an escape
sequence.
QI 53640 C++FE Occasionally during C++ exception processing non-
volatile registers are corrupted when an exception
is rethrown.
QI 54583 C++FE The constructor of an object is not called when
the option /Gt is used.
QI 57919 C++FE The C++ compiler traps when the local directory
is on drive Z:.
QI 59006 C++FE The use of a template friend function of a
template class returning template class as its
type causes a trap in the C++ compiler.
QI 60483 C++FE The severity level of message EDC3504 is error
(SOM) and should be warning.
AP 51998 BE Using -O -Oc -G4 or -G5 may cause the program to execute
in an incorrect order when returning from function.
AP 56644 BE Tiled objects cross the 64K boundary in C code.
AP 55592 BE The copyright information destroys the data stored
in a global variable.
AP 47239 BE During in global register optimization, where the BE tries
to use common the registers sometimes causes an internal
compiler error.
AP 55593 BE A structure with bitfield and volatile members causes
an internal compiler error.
AP 55720 BE Incorrect optimization involving Flat-Seg16 conversion.
AP 55723 BE Two different registers are simultaneously assigned to the
same parameter variable during loop optimization, resulting
in inconsistent values being used for the parameter variable.
AP 49473 BE Incorrect optimization in converting ULONG to LONG.
AP 49172 BE Inlining between a divide expression and a mod expression
may cause incorrect evaluation of the expressions.
AP 53126 BE Errors in the common sub-expression optimization causes a
"EDC4005: Error occurred in intermediate file RBEXPR2(558)".
AP 53356 BE BE incorrectly to replaces a register reference to a
reference constant.
AP 45450 BE The flag /Fa fails when a _Far32 _Pascal function pointer
is initialized to NULL.
AP 58696 BE Using /Fa with a very long class or function name causes
internal compiler error.
AP 41908 BE The BE mangles the 16 bit callgate address when called
through a dynamically loaded callgate.
AP 47686 BE Optimization problem caused by the used of goto's inside
in a deeply nested switch statements and for
statement blocks.
AP 50970 BE Incorrect optimization with thunking when integer
conversion is involved.
AP 51125 BE An optimization problem on max and min macros with
short integers in certain situation.
AP 51219 BE Incorrect optimization about thunking (see AP-50970).
AP 52231 BE Internal compiler error: same as AP-53356
AP 53179 BE Long BE compile time when optimization (/O+) is used
when a large number of arithmetic expressions with
lots of common sub-expressions are used.
AP 56222 BE Optimization with float-int union causes internal compiler
error.
AP 59504 BE Using /O with both divide and mod expressions caused
internal compiler error in certain circumstances
(see also AP-49172).
AP 57376 BE With /O and /G4, strchr() can overwrite the
register.
AP 50569 BE Optimization bug: memory is not reloaded for union bit field
access.
AP 39391 BE BE trap if the argument to __alloca() is a array or
structure member reference.
AP 42361 BE Incorrect initialization of array of structure.
AP 44553 BE With /O+, using sqrt() cause the BE to trap (#5) in
rare circumstances.
AP 49790 BE Fix an optimization bug with uninitialized register which
is used in loop.
QI 44449 BE Upper bit not masked off when optimizing ((ULONG)(USHORT))
in certain loop.
QI 48046 BE Bad optimization with __lxchg() , incorrect branch behaviour
caused by the missing 'test' instruction.
QI 49483 BE BE aborts with an intermediate file error in roopt.c
AP 36882 ICL Use of ICL cause bad debug info sometimes.
AP 43765 ICL Using /Wall in C++ causes ICL to abend with a EDC6005
error
AP 50707 ICL Internal compiler error occurs if the sources are
listed in specific order
AP 51313 ICL Internal compiler error on compiling Info Zip source
AP 52105 RT When fgetws is called to read a file, and the file is
positioned at the end-of-file, the application becomes
deadlocked. This happens only when the application is
linked to the multithreaded runtime (/Gm+).
AP 46009 RT Multithreaded applications may exhibit "thread
starvation", where the threads do not get equal
time slices.
AP 51536 RT _sopen() does not accept O_RDONLY and O_CREAT together
(O_RDONLY | O_CREAT)
AP 45665 RT Statically linking the runtime library always brings in
the tiled memory support, even though the tiled memory
functions are not actually used by the application. This
prevents the application from overriding the new/delete
operators.
AP 43408 RT If the code for a class resides in a DLL, to which is
bound a static copy of the runtime, it is impossible to
use "new" from any other module to create an object of
that class without making a "delete" of that object
cause a memory leak.
QI 42253 RT The fopen() C standard function cannot open a file
whose name include X'5C' in DBCS 2nd byte of the last
character.
QI 41413 RT _chsize function changes to wrong file size. The
problem occurs if the file is opened with the APPEND
attribute, and _chsize is trying to grow the file.
QI 45561 RT An exception occurs when sprintf is used in an
exitlist procedure.
QI 46018 ILINK The debugger's "locate function" action will sometimes
fail if the code was compiled with "ICC /Gl".
QI 47978 ILINK The linker would often give an invalid object error (LNK1101)
when CSetV1 debug objects (HLL3) are linked.
AP 48278 ILINK When linking a virtual device driver (VDD) specification
of a start address generates error LNK4039.
AP 48949 ILINK When linking C++ objects, errors are generated about very short
names that are not defined or referenced in the user's objects.
QI 49093 ILINK Changed the linker option /NOFARCALLTRANSLATION to indicate
it is not supported rather than not recognized.
QI 49617 ILINK Section marked as SHARED was not being shared.
QI 49637 ILINK The linker traps on modules containing an empty #pragma
comment().
QI 50432 ILINK The linker was generating a fatal error (invalid library) if
the library contained an object that did not define any symbols.
AP 50514 ILINK Debugger was displaying wrong lines.
QI 51819 ILINK Library paths specified after libraries were not considered
55525 when searching for libraries.
QI 52451 ILINK The linker reports that libraries with > 32K of browse data
are invalid.
AP 53866 ILINK The debugger was improperly disassembling the code at the
beginning of some functions because the bytes added for
alignment were not single byte instructions.
QI 54633 ILINK The message LNK4027 contained some extraneous characters after
the symbol name.
QI 58793 ILINK Default libraries introduced by a library object were not
searched.
*******************************************************************************
CSD CTC303 is Informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-------------------------------------------------------------------------------
QI 52538 C++FE Duplicate VFTs for templates may be generated
when compiling with the /Ft- compiler option,
causing a "LNK2025: symbol defined more than once"
error when linking.
*******************************************************************************
CSD CTC302 is Informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-------------------------------------------------------------------------------
AP 37520 BE Optimizer was generating incorrect code if a for-loop had
boundary values that were array or structure elements.
AP 37893 BE Intermediate code linker could not handle more than 256
files.
QI 40806 BE The back end will sometimes abort if a common bitfield
expression is typecasted more than once.
QI 41299 BE Changed an optimization that causes "jump-to-location" to
fail in the debugger.
QI 42359 BE Use of the intermediate code linker could cause an
internal compiler error at /O-
AP 42366 BE Optimization of tail-calls combined with inlining
sometimes resulted in stack corruption.
QI 42968 BE Using an inlined member function in loop iteration may
cause an optimization problem
QI 43250 BE Optimization was generating incorrect code for an array
element that stored its own address (a[i] = &a[i])
QI 43878 BE Use of "break" and/or "goto" in a loop could lead to
floating point stack overflow if floating point variable
are used in a loop at /O+
QI 44739 BE BE hangs if there is unreachable code in which the first
statement is a "call"
QI 45041 BE BE will hang if the code contains a loop in the internal
jump statements
QI 45110 BE BE was leaking memory
QI 45285 BE Incorrect code was being generated for an enum parameter
AP 46031 BE Hoisting code out of a loop during optimization will cause
the BE to trap.
QI 46781 BE Incorrect code being produced for the pre-increment
operator
QI 39257 Browser Compiler generates garbage to screen if the output browser
file is locked.
QI 40067 Browser Bad browse information is generated if a function is used
as a default argument for a function parameter.
QI 40068 Browser Generating TableLookupERROR and BadOperatorERROR messages
QI 42967 Browser Losing some function attributes (e.g. static) if they are
in a system include file.
QI 45078 Browser Using class C in a template function definition may cause
the Browser to trap.
QI 39769 C++DTS Attribute get/set parameters are volatile qualified and
attribute method names in C++ are incorrectly som mangled.
QI 40076 C++DTS The following assert message is generated:
assert failed: kind != LOAD_ADDRESS && kind != STORE_VALUE
: on 139 : in cbcgcall.cxx.d1
QI 40399 C++DTS Failing to generate compile-time errors indicating that
the user should not define the _get/_set routines.
QI 41340 C++DTS A local class may be incorrectly declared as a SOM class
IX51299 C++FE Internal compiler error with accessing non-static member
AP 28445 C++FE The compiler was issuing an incorrect error for the
conversion of a pointer to a pointer to member of the same
type.
A B::* p = &B::a;
results in
error EDC3055: "A*" cannot be converted to "A B::*"
QI 37160 C++FE An incorrect #pragma library was an error in C++, but a
warning in C
QI 37529 C++FE If the include path was not fully qualified, template
files are not always generated.
QI 38649 C++FE When /Gt+, tiled memory, was specified variables that were
greater than 64K were not being flagged as an error.
QI 38656 C++FE If pragma comment is specified with precompiled header
files (with /fi /si options) a trap occurs.
QI 39240 C++FE Compiler incorrectly handled tempinc when the root
directory was on the path
QI 39941 C++FE Precompiled headers were trashing the internal copy of the
tempinc directory name, resulting in the compiler being
unable to open the template files.
QI 44076 C++FE Classes with const/ref mems may not be initialized
correctly
AP 46377 C++FE Manually instantiated templates in DLLs may cause problems
with unresolved references to the virtual function table
QI 34937 C++IDL IDL generation strips off members from structures, causing
the SOM compiler to flag an error
QI 37047 C++IDL The SOM compiler crashes when using static member Operator
delete()
QI 37196 C++IDL The IDL generator fails to generate the dimensions of
arrays
QI 37359 C++IDL The SOM compiler fails to generate bit-field offsets from
the generated IDL
QI 37514 C++IDL The IDL generator will no longer generate types defined in
other files, as this can cause a conflict in class names.
QI 37866 C++IDL Generated .hh from compiler generated IDL may result in
unrecognized typenames
QI 37868 C++IDL Generated .hh from compiler generated IDL may result in
failure to find class definitions.
QI 37869 C++IDL Generated .hh from compiler generated IDL may result in
union members already defined
QI 37991 C++IDL The SOM compiler cannot handle the unnamed classes which
may appear in the generated IDL
QI 38019 C++IDL SOM compiler flags syntax errors when compiling generated
IDL
QI 38097 C++IDL Generated IDL does not handle template classes properly
QI 38166 C++IDL Miscellaneous syntax errors in the generated IDL
QI 38483 C++IDL SOM compiler is stripping off the * in pointers in the
generated IDL, causing errors
QI 38620 C++IDL Som compiler does not generate initialization of args for
nested methods in Generated IDL
QI 45521 CFE An _Export qualifer in a function definition has no
effect.
QI 38458 RT Turkish and Finnish Locales contain English days/months
QI 33189 ILINK Change ILINK to detect and ignore equivalent library names
on the command line.
QI 37428 ILINK Fix ILINK to prevent abends with long file names, and to
detect if the MAP and EXE file names are identical.
QI 42386 ILINK In some cases the linker would output error LNK5001E
(invalid page range)
QI 42756 ILINK In some cases the error message L1094 prints a partial
file name. The linker was attempting was made to print a
wide string. This was changed to convert the wide string
to DBCS.
QI 43490 ILINK Sometimes specifying /LINENUMBERS on the linker command
line causes linker error LNK1101, regardless of whether or
not the line number information was actually included in
the object with the /Tn or /Ti options.
QI 43643 ILINK If the linker exceeds the internal limit on the number of
relocations that can be emitted in the run file, it would
hang. It now issues an error message and terminates
processing. This problem occurs only on very large
projects.
*******************************************************************************
CSD CTC301 is Informal Corrective Service
*******************************************************************************
FIX/APAR COMPONENT PROBLEM_DESCRIPTION
-------------------------------------------------------------------------------
QI 37176 ICC Fixes a problem where ICC did not call the intermediate
code linker and code generator if the parameter /C is
provided on a command line similar to "icc /c x.w y.w"
QI 34955 C++FE Read-only data (virtual function tables and some exception
handling data) were not being put into CONST class
segments and so were not readonly and sharable by default.
QI 35634 C++FE Two secondary entry points are being given the same name.
This is not a problem unless Smart Linking (/Gl+) is
specified. With Smart Linking the linker will flags this
as a duplicate symbol and the link fails.
QI 36178 C++FE The compiler would die with an exception after
generating an EDC3548 message.
QI 36268 C++FE The compiler was generating invalid object modules. The
problem was caused by secondary entry points in template
functions not being overridable. If the owner of the
secondary entry point is overridable then the secondary
entry point should be as well.
QI 36750 C++FE The compiler was generating a class member '__e1' when
compiling with SOM.
QI 37121 C++FE The compiler was generating the wrong error message when
casting class pointers. The type of the class pointer
casting operator is its own type rather than its operand's
type.
QI 37123 C++FE The compiler was getting an exception at EIP = 00105204
after generating message EDC3039
QI 37160 C++FE On an invalid #pragma library, the C++ compiler was
treating message EDC3090 as an error. The C compiler was
treating the equivalent message EDC0224 as a warning. The
message should be only a warning.
QI 37272 C++FE C++ compiler was abending at location 00102B47 when doing
a SOM compile
QI 37383 C++FE Incorrect message warning of a null statement.
QI 37646 C++FE The compiler was generating an inappropriate error EDC3618
for pointer to member function in DTS.
QI 37888 C++FE Fixes an abend and/or invalid message on a bad destructor
definition
QI 38137 C++FE The compiler was making a bad decision on whether to
emit destructor code or a RET at the end of a block. The
result could have been undestructed locals, or an infinite
loop if control fell into the exception startup code.
QI 38969 C++FE The C++ compiler was treating message EDC3491 (invalid
precompiled header format) as an error. The C compiler
was (correctly) treating it as a warning.
QI 38978 C++FE Compiling som.hh with /Si+ caused the compiler to go into
infinite loop
QI 39217 C++FE The compile options /Si+ /Ls+ caused a "fatal error
EDC0500: Unexpected compiler error #C0000005:822B6
occurred."
QI 39944 C++FE Fixes an abend when compiling C++ with a precompiled
header
QI 40177 C++FE The compiler is generating bad browser files for some
DTS compiles.
QI 42348 C++FE Fatal Error in compiler front end which may occur when
using precompiled headers.
QI 35499 C++DTS The compiler was failing to construct a class's meta class
before the first object of the class.
QI 39752 C++DTS No IDL was being generated under some conditions. The
compiler was only checking for templates explicitly
instantiated via #pragma define and implicitly
instantiated using the prototype class template, but
failing to allow specialized template classes.
QI 40033 C++DTS Attribute get/set methods were volatile qualified, causing
a problem for some users. A new option "qsomvolattr" has
been added that will default to true to indicate if
attributes should be generated with the volatile
qualifier. qnosomvolattr indicates not to use volatile.
The new compile option is -yxqnosomvolattr.
QI 34330 C++IDL A reintroduced method was being lost in an .hh file
QI 34937 C++IDL IDL generation may have stripped members from structures,
causing the SOM compiler to flag an error
QI 35662 C++IDL The compiler was generating incorrect IDL for code that
contained nested types
QI 37047 C++IDL The compiler may have crash if there was a static member
"Operator delete()"
QI 37196 C++IDL The IDL generator was failing to generate the dimensions
of array causing subsequent errors.
QI 37359 C++IDL SOM compiler was failing to generate correct bit-field
offsets
QI 37510 C++IDL Fixes a problem with templates and friends when going from
C++ to IDL to C++
QI 37514 C++IDL SOM Compiler was causing conflicts with types defined in
other files. Types that are implicitly referenced (such as
parameter types) will NOT be generated if they are defined
in an include file. Instead, the client program will have
to include them just like the implementation did.
QI 37866 C++IDL DTS was emitting bad IDL on a nested typedef
QI 37868 C++IDL SOM compiler generates bad .hh file for some friend
declarations
QI 37869 C++IDL Anonymous union bitfields were being generated twice in
IDL
QI 37991 C++IDL DTS compiler was not correctly handling unnamed classes,
and generating bad IDL.
QI 38019 C++IDL DTS compiler was generating bad IDL if a pointer to an
array of an undefined class was a member of another class.
QI 38097 C++IDL DTS compiler was not always handling template classes
properly
QI 38166 C++IDL DTS compiler generating IDL with miscellaneous syntax
problems.
QI 38483 C++IDL DTS compiler was generating bad IDL. It was stripping off
the * in pointers declared in nested classes
QI 38620 C++IDL The SOM compiler was generating a bad .hh file, missing
the initialization of the arguments for nested methods
QI 41444 C++FE Bad PDB file being generated. Browser itself reports an
Browser error.
QI 37830 C++FE Some small programs caused an Out of Memory exception when
CFE reading in a precompiled header.
QI 38431 C++FE Using the #line directive with a filename may have caused
CFE the compiler to define main() twice
QI 38656 C++FE A precompiled header with #pragma comment did not work
CFE correctly
QI 39498 C++FE The /Fl /FA /Fo compile options caused an "unable to
CFE open file" error if used with a 254 character filename
QI 42397 C++FE A #line statement was not handled correctly in a
CFE precompiled header.
QI 36246 CFE The compiler would trap with an exception if #pragma
title() or #pragma subtitle() were used.
QI 36951 CFE The compiler was generating an extra EDC0524 (_Packed
qualifier) message
QI 38076 CFE Precompiled headers with only preprocessor directives
may have caused problems on subsequent compiles
QI 38361 CFE Use of the /Si compile option may have caused a compiler
abend at location 1F00D.
QI 38648 CFE Compiler would not handle file scoped objects bigger than
64K with /Gt.
The compiler will now issue a warning message for all
objects that are greater than 64k in size if /Gt is
specified.
QI 39217 CFE Using the precompiled headers in conjunction with listing
options might have caused an exception in the compiler
QI 39820 CFE When there were multiple declarations of a symbol, VAC++
was putting the symbol into the data segment that was
active during the first declaration.
The correct method is to use the segment that is active
when the symbol is both defined and initialized. If the
symbol is not initialized (a tentative definition) it is
put into the segment that applies on its last definition.
QI 39866 CFE Function pointers were not always getting the correct
calling convention when /Ti was specified.
QI 40664 CFE Fixes a problem where some fields in the listing output
had spurious values.
QI 42160 CFE Compiler would not expand macros nested deeper than 68
levels.
QI 42217 CFE If one W-code file was compiled with /Ti+ and another one
with /Ti-, when ICL was run to W-code link them together,
an erroneous message EDC6010 was issued, complaining about
an inconsistency in the /Tn option.
QI 43242 CFE When some small precompiled header file were used, the
compiler erroneously complained about data in the
precompiled header file not having the correct format.
QI 43438 CFE Fixes an inconsistency between the documentation and the
behaviour of the search order. The user's guide correctly
gives the first directory searched for #include "" as the
the directory of the source file. The compiler was
searching the directory of the file with the #include ""
directive.
QI 35733 ICL This fix provides support in the intermediate code linker
for new intermediate code options.
QI 36771 ICL The ICL now also checks for consistency of the /Tn, /Oc
and /Gp compile options across files.
QI 36894 ICL Inconsistent /Nd options used when compiling to
intermediate code caused the intermediate linker to
generate an empty default data segment. This could cause
subsequent link problems.
This situation will now generate an error message.
QI 42156 ICL Fixes an unusual condition internal to the intermediate
code linker that would cause it to abend.
QI 43095 ICL Fixes an error handling bug which caused an exception to
occur instead of an EDC6010 msg being generated.
QI 43211 ICL Fixes a bug where static signed_bit_fields structure has
an incorrect value when the /Ol option is on.
QI 35002 BE Fixes an BE bug which incorrectly checked the use-def
alias info, causing variables to be assigned in the
wrong order
QI 35966 BE Fixes a tail-call optimization problem which may result
in optimized code not performing as well as in previous
releases.
QI 37437 BE Corrects an index addressing mode problem which degrades
the performance of the generated code
QI 37568 BE Corrects a problem that causes a fatal error in the
BE (EDC4005).
QI 37587 BE Fixes a bug that caused an internal compiler error at
/O+
QI 37688 BE Integral promotion was not being done correctly in some
expressions containing char or short variables.
QI 37693 BE Corrects a bug that caused the BE to go into an infinite
loop.
QI 37899 BE Corrects an problem with invalid offset in object module
fixup subrecords that caused an invalid object module
error (LNK1101) in ILINK.
QI 37913 BE Parameters may have been passed incorrectly to a function
when a structure whose size is 45-47 bytes was passed by
value.
QI 37937 BE Fixes an invalid offset in some COMDAT records in object
modules that could cause an out of memory or invalid
object module error in ILINK (LNK1064 or LNK1101).
QI 39120 BE Corrects a problem that might cause a trap while BE is
removing dead code.
QI 40548 BE The BE generated incomplete line number information with
/Gl option in certain circumstances. This would affect
the completeness of the debug information.
QI 42103 BE Fixes an optimization problem that could remove a store
incorrectly without considering a parameter register
dependency.
QI 42341 BE Corrects a const bitfield initialization problem.
QI 42662 BE Fixes bad code generation that could lead to the processor
flags being in an incorrect state.
QI 39255 Munch The LNAMES table was of fixed size, and DDE4MNCH.EXE was
overwriting storage past the end.
QI 40242 Munch Fixes an internal failure in DDE4MNCH.EXE
QI 35082 ILINK External function names exactly 255 characters long were
causing ILINK to generate a bad module.
QI 35756 ILINK Linker was incorrectly issuing message LNK4026 when a DLL
imported a symbol that it defined (a self-imported
symbol).
QI 35842 ILINK An invalid internal error was generated by linker during
page order assignment.
QI 36156 ILINK Linker was not generating message LNK4024 if multiple
definitions occurred as a result of #pragma export().
QI 36177 ILINK Linker was not generating message LNK4023 if an
internal/external name conflict results from #pragma
export() and the .DEF file being inconsistent
QI 36554 ILINK Linker was generating different DLLs when a .DEF file was
used and when the /DLL switch was used. The /DLL switch
was generating message LNK4021, and was not sharing the
DATA segment.
QI 36963 ILINK The linker was incorrectly writing the executable file to
the directory from which the first object file was
obtained.
QI 37475 ILINK Under certain conditions, the computed address of
structures whose first initialized field was not the
first field of the structure was incorrect.
QI 38737 ILINK For DLLs the default is that the data segment is SHARED.
If MULTIPLE is specified, this was changed to NONSHARED,
and produced warnings. With this fix the warnings are
not printed.
QI 39073 ILINK Under certain conditions, invalid LNK4001 warnings were
being generated by the linker.
QI 39221 ILINK Incorrect LNK1101 messages were being generated in some
cases when /optfunc was used on objects generated by the
version 2.1 compiler.
QI 39556 ILINK The /PDD and /VDD options were not causing the device
driver header to be initialized correctly by the linker.
QI 39569 ILINK The linker could not find files specified with wildcards
if they did not exist in the current directory.
QI 39631 ILINK Removes a linker-imposed restriction on the maximum
number of imports.
QI 39635 ILINK Message LNK4096 was incorrectly being emitted when the
/DBGPACK option was specified but an input module did not
contain debug information.
QI 39636 ILINK The linker was warning of no stack segment in a VDD,
rather than the reverse
QI 41282 ILINK ILINK was generating bad debug information for template
functions when the code had been put in a header file.
QI 41882 ILINK In some circumstances, the linker was creating incomplete
debug information for C++ template functions.
QI 39659 RT The _heap_check() library function has been enhanced to
check non-debug heap objects
QI 40950 RT Functions have been added to the runtime library to allow
user OS/2 exception handlers that will process exceptions
before the runtime exception handlers. The functions are
prototyped in stdlib.h. The functions are as follows:
int _eh_add(_EH_RTN *);
This function will add a function pointer to a list of
OS/2 exception handlers that will be called by the runtime
exception handler when an OS/2 exception occurs. The
handlers will be chained within the library and called in
a LIFO manner. A non-zero return code indicates an error
has occured.
int _eh_del(_EH_RTN *);
This function will remove the function pointer from the
list of exception handlers that the library maintains. A
non-zero return code indicates an error has occured.
QI 40971 RT There was a highly intermittent bug in multithread library
semaphore code which would cause a lockup at runtime.
QI 41114 RT The runtime library function printf() formatting failed
for integral conversions when the argument was 0 and the
specified precision was 0. No output was produced.
QI 41305 RT The access() and stat() library functions did not operate
correctly if there were no more file handles available.
QI 38482 RT To allow easier migration, the realloc() library function
will now re-use the same storage where that is possible.
WARNING: This is provided as a convenience only; new code
should not depend on it, as this behaviour is not
guranteed by the function definition!
QI 42129 RT The library function mbrtowc() was incorrectly returning
-1 with DBCS strings
*******************************************************************************
Key to components:
BE - Code generator and optimizer
Browser - C++ Class browser
ICC - Compiler control program
CFE - C compiler parser
C++DTS - C++ direct-to-SOM compiler
C++FE - C++ compiler parser
C++IDL - C++ compiler IDL generator
C++RT - C++ runtime library
Munch - DDE4MNCH program used for automatic template instatiation
ICL - Intermediate code linker
ILINK - Object code Linker
RT - C runtime Library