NOTE:  I just received a new version of TP 6.0 in the mail from Borland.  It
       was sent to me because I reported the TBufStream bug.
       It is still marked as TP 6.00, but is dated June 11, 1991.  Many of
       the bugs below have been fixed, but not the TBufStream one!
       I haven't tested everything, but thought I'd release this now,
       because I'm not going to have time for exhaustive testing in
       the near future.

This is the time of year when Borland must be getting ready for another
TP release.  With that in mind, I've put together an update to my bug
list.  If any beta testers out there read this, check for these and see
how well Borland listens to bug reports.

The list is very abbreviated;  if any of the items are too obscure, ask and
I'll expand on them.

I'd appreciate it if anyone sent me their own bug list; I'll publicize
it on Usenet, Fidonet and Compuserve. I'd also appreciate hearing about
patches other than the two I mention.

Duncan Murdoch

  CIS:      71631,122
  Internet: dmurdoch@watstat.waterloo.edu
  Fidonet:  DJ Murdoch at 1:163/140.3


New additions:

The IDE will give incorrect matches when doing word searches on words at the
start of lines (e.g. "Const" matches "onst").  Fixed June 91.

The compiler won't allow the optional identifier in a variant record
to be an already defined scalar type identifer. Not fixed.

The compiler gives spurious errors if you nest loops very deeply (e.g. 256
deep).


TP 6.0 bug list (August 16, 1991)

Dangerous bugs:

You can use typed constants and variables in constant
expressions, giving garbage values.  Fixed June 91.

The coprocessor emulator doesn't check properly for internal
stack overflow; it just wraps around and trashes the top of the
stack segment. Not fixed.

Succ(Seg(v)) = Seg(v)  and Pred(Seg(v)) = Seg(v) !  Fixed June 91.

TBufStream writes garbage to the stream sometimes.  (A patch for
this is available from Borland QA).  NOT fixed!

IN doesn't properly handle out of range values.  (What it does is to
demote out of range scalars to byte, ignoring any high bits.) Not fixed.

Referencing fields of records in inline code sometimes makes the
compiler go quietly insane.  Not fixed.


 Other bugs:

Coprocessor errors are often reported at the wrong address if the
error occurs on the first pass through. Not fixed.

GetDir returns a root directory for non-existent drives.  (As documented.)

Horizontal text justification to the right side doesn't work if
the writing direction is vertical.

Intr and MsDos don't always work properly in V86 mode under
Windows 3, because they don't use the INT instruction.

The TVEdit unit can't input some digits.  (A patch for
this is available.) Fixed in June 91.

^T in TVEdit sometimes deletes more than the next word.

^QF followed by ^L followed by Space deletes words in TVEdit.

TProgram doesn't clean up memory properly on exit.

TFileViewer's FileName field is never disposed.

The IDE forgets your snow check setting if you jump to DOS and
exit back.

Writeln wipes out the status word in the coprocessor. Not fixed.

You can allocate an array bigger than 65528 bytes on the heap; it
may wrap around and trash whatever precedes it.  Not fixed.

The coprocessor emulator doesn't propagate NaNs the same way as
a real coprocessor does.  Not fixed.

The string conversion routines sometimes print NaNs as INF.

Complicated expressions involving Reals compiled $N+ will
unnecessarily overflow the coprocessor stack (and trigger the
dangerous error above).  Not fixed.

The $G+ option makes the inline assembler use inline floating
point code, rather than the CD forms that allow emulation. Fixed in June 91.

Graph3.Plot leaves a word on the stack; if you call it
repeatedly, you may get a stack overflow; if you call it from a
routine that doesn't have any locals, you're dead.  Fixed in June 91.

Some weird problems with F7 Trace; sometimes it just refuses to
do it.

There are certain illegal Extended encodings that crash the
debugger in TURBO. Not fixed.

Range checking shouldn't apply to the limits in a for loop.

Method arguments shouldn't be at the same scoping level as method
names.

The compiler exports private identifiers in .TPU files (though
you can't use them).

(And for free, a TD 2.01 bug:)

If the condition for a conditional breakpoint is a little too
long, the popup window gets messed up; if it's really too long,
TD dies.