home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 30 fixes_v / 30-fixes_v.zip / c16_c.zip / README.C < prev    next >
Text File  |  1994-07-01  |  33KB  |  819 lines

  1.  
  2.           ****************
  3.           ** C Compiler **
  4.           ****************
  5.  
  6.     Don't issue errors for invalid octal constants found in blocks
  7.     of code that are commented out.
  8. ===========================================================
  9.  
  10.     Expressions of the form:
  11.     
  12.         "string"( 1 );
  13.     
  14.     caused the compiler to crash.
  15. ===========================================================
  16.  
  17.           ********************
  18.           ** Code Generator **
  19.           ********************
  20.  
  21.     Taking the address of a "far" function in the 32-bit
  22.     compiler when the "-bt=windows" switch was used would
  23.     sometimes only generate a 16-bit offset fixup rather
  24.     than a 32-bit offset.
  25. ===========================================================
  26.  
  27.     Functions which returned structures using __syscall
  28.     would lose track of the amount of stuff on the stack.
  29. ===========================================================
  30.  
  31.     An instruction which had an indexed operand and result
  32.     which were the same (ie [edx]), and for which there was
  33.     an older register with the same value available,
  34.     would replace the register with the older value, even if
  35.     the older value was destroyed by the operation.
  36.  
  37.     ie.        mov eax, edx
  38.             sqrt [edx] -> [edx]    { destroys eax }
  39.     would become
  40.         mov eax, edx
  41.         sqrt [eax] -> [eax]    { bad since eax destroyed }
  42. ===========================================================
  43.  
  44.     If we had a loop which was the destination of a multi-way
  45.     branch (ie switch), instructions which were used to setup
  46.     induction variables would be lost when writing out the
  47.     object file, providing there were no paths to the loop other
  48.     than through the multi-way branch. (You don't want to see the
  49.     example :)
  50. ===========================================================
  51.  
  52.     Fixed a bug in the floating point scheduler which would
  53.     cause an ICE #81 to occur when trying to deal with POW
  54.     operations if -fpr and -fp5 were both thrown.
  55. ===========================================================
  56.  
  57.     The inline assembler did not properly encode the
  58.     following instruction with the 32-bit compilers:
  59.  
  60.             mov ss,sp
  61.  
  62. ===========================================================
  63.  
  64.     The C++ compiler could cause the code generator to
  65.     output information to the object file which would
  66.     confuse wdisasm into displaying whole code segments
  67.     as "DB <hex_byte>" rather than assembly instructions.
  68.     It had no effect on the actual generated code.
  69. ===========================================================
  70.  
  71.     The inline assembler for the 32-bit compilers did not
  72.     properly handle a conditional jump instruction to
  73.     an external procedure.
  74. ===========================================================
  75.  
  76.     Loops which were driven by a comparison involving a
  77.     bit-test (such as while( i & 3 ) ), could, if the
  78.     compiler got over-zealous in applying induction variable
  79.     analysis, have bad code generated for them.
  80. ===========================================================
  81.  
  82.     byte swapping code which led to an instruction like
  83.     "movzx dx,dh" would be (mis)optimized into something which
  84.     zeroed out the dx register. Note that the operands had to
  85.     be a two-byte register and it's high half for this to occur.
  86. ===========================================================
  87.  
  88.     A pair of instructions which looked something like
  89.         "add A,X -> A" and "add A,Y -> B"
  90.     would be changed into something which looked like
  91.         "add A,X+Y -> B" and "add A,X -> A"
  92.     This was bad if B was redefined in between the two instructions
  93.     and the placements of the new instructions were identical to the
  94.     old ones.
  95. ===========================================================
  96.  
  97.     Constants near an expression involving a multiplication
  98.     by 0 would be treated as 0.
  99. ===========================================================
  100.  
  101.     The QNX 32-bit hosted compilers could run out of stack
  102.     space when compiling large routines since the code 
  103.     which allocated more stack in the code generator for deeply 
  104.     recursive routines was accidently disabled.
  105. ===========================================================
  106.  
  107.     Loops with a driving expression which could be determined to
  108.     be TRUE at compile time would cause code generator to hang in
  109.     certain situations.
  110. ===========================================================
  111.  
  112.           ***************
  113.           ** C Library **
  114.           ***************
  115.  
  116.     _grow_handles() for OS/2 1.x now handles case where
  117.     the argument specifies fewer than the minimum number of
  118.     handles allowed by the operating system.
  119. ===========================================================
  120.  
  121.     Small data model (-ms, -mm) Windows 16 bit executables
  122.     now receive a valid pointer in the LpCmdLine variable
  123.     passed to WinMain().
  124. ===========================================================
  125.  
  126.     POSIX level close() for OS/2 2.x and Windows NT now
  127.     properly manages the multi-thread serialization primitives.
  128. ===========================================================
  129.  
  130.     OS/2 2.x startup code for DLLs now sets up the environment
  131.     information for use from within the DLL.
  132. ===========================================================
  133.  
  134.     The fcvt() and ecvt() functions now properly append
  135.     trailing zeros when requested.
  136. ===========================================================
  137.  
  138.     The POSIX level read() function when opened with O_TEXT
  139.     did not handle embedded ctrl-z characters properly.
  140. ===========================================================
  141.  
  142.     The fdopen() function now properly handles the "a"
  143.     attribute when in the face of calls to ftell().
  144. ===========================================================
  145.  
  146.     OS/2 spawn calls now handle P_NOWAITO and P_NOWAIT properly
  147.     for use by subsequent calls to wait().
  148. ===========================================================
  149.  
  150.     _dos_findclose() stub function has been added to the DOS
  151.     hosted library in order to minimize user program conditional
  152.     compilation given that _dos_findclose() must be called
  153.     under OS/2 and Windows NT.
  154. ===========================================================
  155.  
  156.     NT hosted fclose() function was not properly releasing
  157.     the file handle.
  158. ===========================================================
  159.  
  160.     _harderr() function was not setting up DS prior to use
  161.     in large data models.
  162. ===========================================================
  163.  
  164.     NT hosted heap manager was not making proper use of
  165.     serialization primitives for multi-threading support.
  166. ===========================================================
  167.  
  168.     _harderr function didn't calculate the device header address
  169.     correctly in 32-bit extended DOS environment.
  170. ===========================================================
  171.  
  172.     Memory allocation with FlashTek extender fixed so that it
  173.     doesn't use the "lsl" instruction.
  174. ===========================================================
  175.  
  176.     Under OS/2 2.x longjmp() from a signal handler is allowed
  177.     and now re-enables subsequent invocations of the signal.
  178. ===========================================================
  179.  
  180.     32bit _harderr() function was not working properly for
  181.     PharLap version 5 or the PharLap TNT extender.
  182. ===========================================================
  183.  
  184.     Under OS/2 the isatty() function incorrectly indicated
  185.     that pipes were ttys.
  186. ===========================================================
  187.  
  188.     The mktime() function did not handle negative hours
  189.     properly.
  190. ===========================================================
  191.  
  192.     The localtime() function did not figure out DST
  193.     (Daylight Savings Time) properly when configured for
  194.     the southern hemisphere where the start point comes
  195.     after the end point in a given calendar year.
  196. ===========================================================
  197.  
  198.     The signal() function did not properly ignore signals
  199.     when SIG_INT specified for OS/2 and Windows NT.
  200. ===========================================================
  201.  
  202.     st_mode field in fstat struct was not being initialized on NT.
  203. ===========================================================
  204.  
  205.     The QNX version of kbhit did not return TRUE if an
  206.     ungetc() had been done.
  207. ===========================================================
  208.  
  209.     Fixed malloc() for PharLap/QNX systems for cases where
  210.     sbrk() is called between mallocs.
  211. ===========================================================
  212.  
  213.     Fixed scanf() and related functions to properly handle
  214.     assignment suppression of floating point values.
  215. ===========================================================
  216.  
  217.     Fixed _heapshrink() for Rational Systems DOS/4GW.
  218. ===========================================================
  219.  
  220.     Industry convention says that puts() and fputs() return
  221.     the number of characters written on success.  The ANSI
  222.     spec says that they return a non-negative value on
  223.     success.  The functions have been changed to conform
  224.     with the industry convention since it is not incompatible
  225.     with the ANSI specification.
  226. ===========================================================
  227.  
  228.     sopen() function was not properly setting errno to
  229.     EEXIST under Windows NT.
  230. ===========================================================
  231.  
  232.     Under extended dos a call to malloc() slightly less than
  233.     4GB of memory would not fail properly.
  234. ===========================================================
  235.  
  236.     The OS/2 spawn* functions did not work properly in
  237.     a detached session.
  238. ===========================================================
  239.  
  240.     fixed _nheapshrink() and _nheapmin() for the case where
  241.     a sbrk() or system specific piece of memory is added
  242.     after the CLIB's memory (should not shrink in this case
  243.     because it will cancel or corrupt the alternate memory)
  244. ===========================================================
  245.  
  246.     fixed integer exponent operator for (-1)^(-1)
  247. ===========================================================
  248.  
  249.     fixed localtime() function to properly assume that it
  250.     is not daylight savings time when no rule has been
  251.     specifed for the conversion to daylight savings time.
  252. ===========================================================
  253.  
  254.     spawn wasn't setting the .cb field in the parm passed
  255.     to CreateProcess.  This didn't matter under NT, but wouldn't
  256.     work on Chicago.
  257. ===========================================================
  258.  
  259.           ******************
  260.           ** C++ Compiler **
  261.           ******************
  262.  
  263.     fixed virtual thunk calculation for certain non-virtual
  264.     multiple inheritance hierarchies (fairly rare case because
  265.     the C++ compiler already tries to minimize the number of
  266.     thunks it has to generate so the problem only occurs if
  267.     you combine two hierarchies that have a lot of virtual fns)
  268.     
  269.     e.g.,   B1  B2  B3(f)    where sizeof(B1) != 0
  270.          \   \  /          and sizeof(B2) != 0
  271.           \   D1(f)    call f() in B3 context
  272.            \  /
  273.         D2
  274.  
  275. ===========================================================
  276.  
  277.     static members should not influence whether a class
  278.     needs a constructor since they are initialized
  279.     separately (likewise for destructors and op=)
  280.  
  281. ===========================================================
  282.  
  283.     fixed token pasting of two tokens that result in
  284.     a long string
  285.     e.g.,
  286.  
  287.     #define TXT( a ) L##a
  288.     
  289.     long char *p = TXT("xx");
  290.  
  291. ===========================================================
  292.  
  293.     The C++ compiler did not properly parse command line
  294.     macro definitions with values (e.g., -DFOO=5) if the
  295.     -D+ option had been previously specified.
  296. ===========================================================
  297.  
  298.     Compiler complained about an invalid octal constant
  299.     even though the source code was being skipped.
  300.     e.g.,
  301.     #if 0
  302.     08
  303.     #endif
  304. ===========================================================
  305.  
  306.     fix to correctly handle unsigned constants in
  307.     preprocessor directives.
  308. ===========================================================
  309.  
  310.     fixed optimization of a default ctor when a class is
  311.     embedded within another class at a non-zero offset
  312. ===========================================================
  313.  
  314.     fixed scanning of hex constants so that if there are
  315.     a lot of digits, all of the digits will be absorbed
  316.     and only one error message will be issued
  317.  
  318.     e.g.,
  319.     #if 0 < 0x7fffffffffffffffff
  320.     #endif
  321. ===========================================================
  322.  
  323.     #include'ing a file with no extension did not work
  324.     properly.
  325. ===========================================================
  326.  
  327.     Added the -ft and -fx switches. Some of the C++ header
  328.     files have names that do not fit in the the DOS 8.3
  329.     naming restrictions. E.g. strstream.h. Some people
  330.     include "strstream.h" while others include "strstrea.h".
  331.     To allow both forms to work, if the compiler can not
  332.     open a file and the name is longer than 8 characters,
  333.     it will truncate the name to 8 and try opening this new
  334.     name. This is the default behaviour. Checking for the
  335.     truncated name can be disabled by using the -fx switch.
  336.     The behaviour can be re-enabled by specifying -ft later
  337.     on the command line.
  338. ===========================================================
  339.  
  340.     allow the following code:
  341.  
  342.     typedef int IFI( int );
  343.     struct S {
  344.     virtual IFI x;
  345.     virtual IFI y;
  346.     };
  347. ===========================================================
  348.  
  349.     Allow a cast to a reference to an undefined class type.
  350. ===========================================================
  351.  
  352.     Fixed explicit near modifiers when the default code
  353.     model is far.
  354.     e.g.,
  355.     void near foo()
  356.     {
  357.     }
  358. ===========================================================
  359.  
  360.     Fixed destruction of class static members so that they
  361.     are destructed in proper reverse source order along with
  362.     file-scope variables.
  363. ===========================================================
  364.  
  365.     Allow constructor style initialization for a class
  366.     without any explicit constructors declared if the
  367.     initialization can be done with the compiler
  368.     generated copy constructor.
  369.     e.g.,
  370.     struct S { int a, b; };
  371.     void foo( S *p ) {
  372.         S v( *p );
  373.     }
  374. ===========================================================
  375.  
  376.     fixed ctor optimization of single ctors nested in
  377.     class members.
  378. ===========================================================
  379.  
  380.     Improved error message for mem-initializers for class
  381.     members with a single argument constructor.
  382.     e.g.,
  383.     struct C {
  384.         C();
  385.         ~C();
  386.     };
  387.     
  388.     struct D {
  389.         C c;
  390.         D(int a);
  391.         ~D();
  392.     };
  393.     
  394.     D::D(int a) : c(a) {
  395.                   ^^^^- error cannot construct C with an int
  396.     }
  397.  
  398. ===========================================================
  399.  
  400.     Changed the -d2~ switch so that it does not generate
  401.     information for inline member functions in classes.
  402.     This prevents the compiler from generating out
  403.     of line instances of the functions, saving on object
  404.     file size.
  405. ===========================================================
  406.  
  407.     Long double constants were being truncated to integers.
  408. ===========================================================
  409.  
  410.     Compiler won't print warnings 480 and 481 if both
  411.     declarations are in library include files
  412.     (i.e., #include <file.h>).
  413.     
  414. ===========================================================
  415.  
  416.           *****************
  417.           ** C++ Library **
  418.           *****************
  419.  
  420.     ostream::operator <<( signed long ) function fixed to
  421.     correctly format the value LONG_MIN in limits.h.
  422. ===========================================================
  423.  
  424.     C++ runtime support did not properly record special
  425.     case of user throwing the value zero as an exception.
  426. ===========================================================
  427.  
  428.     The istream::get( streambuf &, char ) member function did
  429.     not correctly set ios::eofbit upon reaching eof.
  430. ===========================================================
  431.  
  432.     The fstream (ifstream,ofstream,fstream) open() and attach()
  433.     member functions now clear all ios::iostate bits on success.
  434. ===========================================================
  435.  
  436.           *************
  437.           ** DOS4/GW **
  438.           *************
  439.                        +----------------------+
  440.                        | Key to release notes |
  441.                        |                      |
  442.                        | E -- Enhancement     |
  443.                        | B -- Bug (fix)       |
  444.                        | D -- Documentation   |
  445.                        +----------------------+
  446.  
  447.  
  448. Release 1.97, 01Jun94 (changes since release 1.95)
  449. ---------------------
  450.  
  451. E ** IMPORTANT: the default settings for many virtual memory manager
  452.      configuration options HAVE BEEN CHANGED to work better on a
  453.      larger number of systems, as determined by feedback from our
  454.      customers.
  455.  
  456.         Option          Old value               New value
  457.         ------          ---------               ---------
  458.         DELETESWAP      0                       1
  459.         SWAPNAME        \dos4gvm.swp            .
  460.  
  461.      The DELETESWAP and SWAPNAME changes were made because most
  462.      applications don't run over and over again, and the convenience
  463.      of a temporary swap file outweighs the speed advantage of a
  464.      permanent swap file.  Also, the new default setting works
  465.      even if you spawn another DOS/4GW application that uses VMM.
  466.      The default behavior is to create a randomly named swap file in
  467.      the same directory as your application, and remove it on exit.
  468.  
  469.         Option          Old value               New value
  470.         ------          ---------               ---------
  471.         SWAPMIN         0                       0
  472.         SWAPINC         0                       4096
  473.  
  474.      SWAPMIN and SWAPINC were changed to save disk space when there
  475.      is sufficient physical memory to run the program.  The swap
  476.      file will now start out at zero length, and it will grow as
  477.      needed by 4 MB increments.  To specify a fixed-size swap
  478.      file, set SWAPINC to 0.
  479.  
  480.      Please note that these changes WILL slow down program startup
  481.      slightly, but the new defaults will work on more machines and
  482.      conserve disk space.  A higher-performance virtual memory
  483.      manager is available in DOS/4GW Professional.  We encourage
  484.      you to measure performance of your program on a typical end
  485.      user machine.
  486.  
  487. E ** SWAPNAME can now be set to just a directory name, in which
  488.      case a unique file name will generated.
  489.  
  490. E ** To change the new DELETESWAP default, set DOS4GVM=NODELETESWAP.
  491.  
  492. E ** For interrupts which the user program has not hooked, DOS/4GW
  493.      will now chain to the previous handler immediately,
  494.      instead of first switching to the transfer stack.  This optimization
  495.      reduces the round-trip time for a passdown interrupt by about
  496.      15%, and it solves "transfer stack overflow" problems caused
  497.      by interrupts coming in faster than the extender can handle
  498.      them (e.g. PC-NFS on a slow machine at times of high network
  499.      load).
  500.  
  501. E ** We have added error message 1002, "DOS/4GW may not be renamed or
  502.      bound", as a preventive check against practices which can
  503.      fool DOS/4GW's command-line parser and cause subtle bugs
  504.      in program execution.
  505.  
  506. E ** Error message 1014 diagnoses the situation when a program issues
  507.      the unsupported INT 21h/31h function (Terminate and Stay
  508.      Resident).  (If you need TSR capability, DOS/4G is required.)
  509.  
  510. E ** Error message 2533 diagnoses the situation when there isn't
  511.      enough disk space for VMM's swap file.
  512.  
  513.      2533: not enough disk space for SwapMin - <number> bytes needed
  514.  
  515. E ** DOS/4GW now supports these DPMI 1.0 functions, which are used in
  516.      implementing floating-point emulators:
  517.  
  518.           INT 31h/E00h   Get Coprocessor Status
  519.           INT 31h/E01h   Set Coprocessor Emulation
  520.  
  521. E ** The mouse callback code has been rewritten to use a DPMI
  522.      real-mode callback instead of a passup interrupt.  This new
  523.      behavior is more compatible with other DPMI hosts, and also
  524.      more compatible with DESQview, which doesn't virtualize
  525.      the entire real mode interrupt vector table when a graphical
  526.      program is interrupted by a hardware interrupt.
  527.  
  528. E ** INT 21h/60h (Resolve To Canonical Path Name) is now supported,
  529.      with pointer translation for DS:ESI and ES:EDI.
  530.  
  531. E ** Loading of linear executables has been sped up slightly
  532.      by eliminating a few disk accesses.
  533.  
  534. E ** If a loaded program's initial ESP is within 0x100 bytes of the
  535.      next page boundary, the next page is touched at load time to
  536.      prevent page faults on the stack during hardware interrupts.
  537.  
  538. E ** The linear executable loader will now diagnose an attempt
  539.      to load a program that has no stack.
  540.  
  541. B ** We have worked around a bug in the Windows NT DPMI host,
  542.      involving the real-mode stack pointer on entry to a real-mode
  543.      callback, which may improve passup interrupt handling under
  544.      Windows NT.
  545.  
  546. B ** A debug exception caused by a hard-coded "INT 1" instruction
  547.      will now be passed down to real mode, instead of causing
  548.      DOS/4GW error 2001.
  549.  
  550. B ** INT 21/48h, which has never been supported by DOS/4G extenders
  551.      for allocations larger than 64 KB, now returns the carry
  552.      flag in that circumstance.
  553.  
  554. B ** A bug in INT 21/49h that could cause the application to
  555.      terminate prematurely has been fixed.
  556.  
  557. B ** User-specified Ctrl-Break, Ctrl-C, and critical error handlers
  558.      are now restored properly after shelling out to another application.
  559.  
  560. B ** Getting a critical error after installing and removing your
  561.      own critical error handler is no longer a problem.
  562.  
  563. B ** On a failed INT 31/100h, 101h, or 102h, the DOS error code
  564.      is now properly returned in AX.
  565.  
  566. B ** Under our VMM, INT 31/502h did not properly flush the cache
  567.      after freeing pages.  If the pages were written to before the
  568.      next flush, the data could have been lost.  This bug was a
  569.      serious problem with the WATCOM 9.5B-level patches (and its
  570.      initial 10.0 release); it could cause malloc() to fail
  571.      prematurely, regardless of the amount of available memory.
  572.  
  573. B ** A problem resizing blocks larger than 64 KB with INT 31/503h
  574.      (only a problem when VMM was not running) has been fixed.
  575.  
  576. B ** Attempting to lock all available memory (INT 31/600) under VMM
  577.      will now (properly) fail.  It had been locking the memory, and
  578.      leaving no pages to use for swapping.
  579.  
  580. B ** A bug in VMM's INT 31/601, where pages would not actually be
  581.      unlocked, has been fixed.
  582.  
  583. B ** Accounting of memory under VMM has been improved.
  584.  
  585. B ** Mouse callback functions are now called on a 32-bit stack.
  586.  
  587. B ** A bug in loading programs when the base address is >16 MB
  588.      (as when spawned by another very large DOS/4G application)
  589.      has been fixed.
  590.  
  591. B ** A bug in loading, after being spawned by a program built
  592.      with a more recent version of DOS/16M, has been corrected.
  593.  
  594. B ** Under a 32-bit DPMI host, such as OS/2 2.1, ALIAS16 objects
  595.      are now properly loaded into a 16-bit segment.
  596.  
  597. B ** We are now performing even more cautious disambiguation
  598.      between hardware interrupts and exceptions.  The new
  599.      logic prevents problems on very rare hardware configurations
  600.      where interference on the bus causes spurious INT 8 events.
  601.      (This bug is like the previously reported, and commoner,
  602.      problem with spurious INT 0Fh caused by flaky IDE controllers.
  603.      However, in the rarer case, the undriven interrupt ID lines
  604.      are all zeroes instead of ones.)
  605.  
  606. B ** We now distinguish between software interrupts and exceptions
  607.      in the range 0-Fh.  For example, we will signal an interrupt
  608.      instead of an exception when a protected mode INT 9 instruction
  609.      is executed.
  610.  
  611. B ** A bug in handling interrupts with the direction flag set
  612.      has been fixed.
  613.  
  614. B ** An obscure bug involving failure to resize a segment when
  615.      installing handlers for more than 32 interrupts has been fixed.
  616.  
  617. B ** Attempts to free a descriptor when one or more of the
  618.      segment registers still contain the selector for that
  619.      descriptor will no longer cause a general protection fault.
  620.      Previously, the code worked because the default GP fault
  621.      handler covered up "POP segreg" instructions and zeroed
  622.      the segment register; however, this behavior required
  623.      that people who hooked exception 0Dh themselves also
  624.      wrote code to cover up the bad POP instructions.
  625.  
  626. B ** The more aggressive null pointer checking introduced in
  627.      version 1.95 (reads as well as writes) has been relaxed to
  628.      work better with programs that manage extended memory and
  629.      test the A20 line state by testing for pointer wraparound
  630.      (for example, SMARTDRV).  Null pointer checking is now
  631.      disabled during DOS calls.
  632.  
  633. B ** The swap file is now closed before shelling to DOS, so that
  634.      the file size will be updated and a spawned copy of CHKDSK
  635.      will no longer report lost clusters.
  636.  
  637. B ** A bug in failing to enforce the MINMEM parameter has been
  638.      fixed.
  639.  
  640. B ** A bug in failing to update the DPMI Memory Information
  641.      (INT 31h/500h) after locking memory has been fixed.
  642.  
  643. B ** Several obscure bugs in the virtual memory manager are fixed.
  644.      These bugs occasionally showed up in calls to INT 31h/503h
  645.      (Resize Memory Block), INT 31h/600h (Lock Linear Region) and
  646.      INT 31h/800h (Physical Address Mapping).
  647. ===========================================================
  648.  
  649.           *************************
  650.           ** FORTRAN 77 Compiler **
  651.           *************************
  652.  
  653.     Fixed a problem with data initializing fields in a structure
  654.     that contained a field that itself was another structure.
  655. ===========================================================
  656.  
  657.     Added the VOLATILE statement.
  658.  
  659.     VOLATILE VAR1, ... VARn
  660.  
  661.     A variable specified in a VOLATILE statement instructs the
  662.     code generator that the variable may change asynchronously.
  663.     Each time value of the variable is required, it will be
  664.     fetched from memory and each time the variable is assigned
  665.     a new value, it will immediately be stored in memory.
  666. ===========================================================
  667.  
  668.     Fixed a problem with INTEGER*2 constants.  The compiler assumed
  669.     they were unsigned in certain unpredictable cirumstances when in
  670.     fact they were signed.
  671. ===========================================================
  672.  
  673.           ************************
  674.           ** FORTRAN 77 Library **
  675.           ************************
  676.  
  677.     Printing INTEGER*1 or INTEGER*2 arrays would cause
  678.     incorrect data to be displayed.
  679. ===========================================================
  680.  
  681.     Input of logical data now allows lower case "t" and "f"
  682.     for TRUE and FALSE.
  683. ===========================================================
  684.  
  685.     Fixed a problem in NAMELIST input when reading complex
  686.     arrays.
  687. ===========================================================
  688.  
  689.     The following READ statement would issue an error with input
  690.     "2*0" and succeed with input "0 0".  Both forms of input are
  691.     now accepted.
  692.  
  693.     READ( *, * ) I, X
  694.  
  695.     where I is integer and X is real.
  696. ===========================================================
  697.  
  698.     STOP and PAUSE did not work correctly in Windows and OS/2
  699.     Presentation Manager applications.
  700. ===========================================================
  701.  
  702.     Fixed a problem with integer exponentiation.  The following
  703.     would print 0 instead of -1.
  704.     
  705.         I = -1
  706.     PRINT *, I**I
  707. ===========================================================
  708.  
  709.           **********************
  710.           ** Graphics Library **
  711.           **********************
  712.  
  713.     Fixed problem with the calculation of y-values 
  714.     in _getwindowcoord.
  715. ===========================================================
  716.  
  717.           ********************
  718.           ** C Header Files **
  719.           ********************
  720.  
  721.     IOMANIP.H was missing the #define that caused it to
  722.     only be included once.
  723. ===========================================================
  724.  
  725.     stdlib.h should contain the atoh() function prototype
  726.     under QNX systems only.
  727. ===========================================================
  728.  
  729.           ************
  730.           ** Linker **
  731.           ************
  732.  
  733.     When going into interactive mode, the QNX hosted version
  734.     of the linker displayed the incorrect message on how
  735.     to terminate the session.
  736. ===========================================================
  737.  
  738.     fixed a couple of bugs with option eliminate
  739. ===========================================================
  740.  
  741.     ignore BLKD32 and BLKE32 records, and make sure 'k' and
  742.     'm' aren't parsed as numbers.
  743. ===========================================================
  744.  
  745.     When you have a phar lap application that starts with a
  746.     16-bit segment that has a user-defined group, if you do
  747.     not use option offset the linker will start at address
  748.     0xffffffff rather than 0.
  749. ===========================================================
  750.  
  751.     Fixup pages were not being padded to a dword boundary in
  752.     PE executables.  Resulting DLLs would not run under Chicago.
  753. ===========================================================
  754.  
  755.           ***********************
  756.           ** Windows SDK Tools **
  757.           ***********************
  758.  
  759.     Fixed a bug in NT.LIB that caused programs using functions from
  760.     winspool.drv to fail at runtime because they could not find
  761.     winspool.dll.
  762. ===========================================================
  763.  
  764.     Fixed a bug in wrc that would cause it to generate an error message
  765.     when adding resources to an NT executable or DLL that contained an
  766.     object of size zero.
  767. ===========================================================
  768.  
  769.           ************
  770.           ** WVIDEO **
  771.           ************
  772.  
  773.     The QNX hosted debugger will now process any symbolic
  774.     information present on the /boot/sys/Slib16 and /boot/sys/Slib32
  775.     executables. This will provide symbolic addresses for
  776.     processes which die in the system shared library code
  777.     and also all the "show calls" hueristics to trace out
  778.     of the shared library to find out what user code originally
  779.     entered the shared library.
  780.  
  781.     NOTE: Since a post mortem dump file does not contain
  782.     data from the shared library of the system on which the
  783.     dump occured, the PMD.TRP file causes the debugger to
  784.     not process the symbolic information for the local
  785.     /boot/sys/Slib?? if it determines that the local OS is
  786.     a different version than that of the system on which
  787.     the dump occured. This determination is the same as
  788.     the one used to see if reading from the GDT selectors
  789.     of the local system is OK, and can be overridden in the
  790.     same manner, with the with the trap file parameters 'g'
  791.     to force enablement or 'd' to disable.
  792. ===========================================================
  793.  
  794.     If the PMD.TRP (QNX) file can not open the executable with the
  795.     name as specified in the post mortem dump file, it now
  796.     will remove any node number from the name and try that.
  797. ===========================================================
  798.  
  799.     Fixed RSIHELP.EXP so that set DOS4G=NULLP can be used
  800.     with DOS/4GW version 1.96 and above.
  801. ===========================================================
  802.  
  803.     Pressing F10, cursoring to the "Break!", "Watch!", "Trace!", 
  804.     or "Go!" menu items and then pressing cursor up or
  805.     down crashed the debugger.
  806. ===========================================================
  807.  
  808.           **************
  809.           ** Profiler **
  810.           **************
  811.  
  812.     Changed the character used in listing histograms from
  813.     '\xdb' to '#' to print better.
  814. ===========================================================
  815.  
  816.     Increased the stack size in WSAMPOS2.EXE to avoid
  817.     problems in an OS/2 PM window.
  818. ===========================================================
  819.