/* This file contains the list of known bugs in Actor version 1.0.

It is current as of 2/18/87.

After fixing each of these, be sure to do a cleanup() and a snapshot
as directed in the Actor Tutorial.

1. The dosError method for class File will always report the wrong
error code.  For example, if you type load("nofile.dat"), and the
DOS file "nofile.dat" doesn't exist, the error number that the error
dialog reports is garbage.  To fix it, change the line in dosErrror which
reads:

	printOn(bp, strm)

to

	printOn(getError(self), strm)

2. nil.ancestor and nil.variables will hang the system.  Do not try
to access the instance variables or ancestor of a class unless you first
test that the class is not nil.  For example, if Sam is a valid class,
then

	Sam.variables

will work fine.  But if Sam is nil, then the same statement will hang
the system.	 This will be fixed in the next release.

3. There is no putLSB method for class Struct defined in the image
ACTOR.IMA, but it is defined in the Struct class file.  To remedy this
situation, type the following:

	load("classes\struct.cls") <CR>

4. In the DDE demonstration program, we used local atoms to transfer
topics rather than global atoms.  The program works OK, but was implemented
slightly wrong.  For details on the correct implementation, consult the
file DDE.ARC on GEnie.	We will also post this information on the 
Whitewater Bulletin Board System (BBS).

5. In the file ACTOR.RC, change the line near to top which reads

	#include "hello.h"

to

	#include "actrc.h"

6. Change the line in the tempStr method in class WorkEdit from

	^" {(using(elem)      }"

to

	^" {using(elem)      }"

Until you do, the block template from any Templates menu will
appear with the extra left parenthesis.

7. In the findItemIndex method of class SortedCollection, you should
change the portion which reads

	if not(eval(compareBlock,item,last(self)))
	then ^tuple(nil,lastElement)

to

	if not(eval(compareBlock,item,last(self)))
	then if target = self:Object[lastElement-1]
		then ^tuple(true,lastElement-1)
		else ^tuple(nil,lastElement)
		endif;

This bug will affect you if you plan on using the SortedSet class
we include with Actor (see below).

8. The line in the grow method of class SorteddCollection which reads

	new(SortedCollection)

should be changed to

	new(class(self))									 
															  
This bug will affect you if you try to define a descendant of class
SortedCollection, because whenever it is grow'ed, it will return a
SortedCollection object rather than an instance of the class you
have defined.

9. If you are running the MS-Windows Runtime system (the one we include,
rather than the commercial version), make sure that when you quit Actor,
do not have any Popup windows (Browsers, Inspectors, etc.) which extends
into the icon bar at the bottom of the screen.  If any popup window
extends into the icon bar area when you close Actor, then instead of
exiting to DOS, your computer will hang and you will have to reboot.

Users who have the commercial version of MS-Windows will exit normally to
the MS-DOS Executive and will not experience this problem.

As far as we know, this is a MS-Windows bug and we will try to think of
a suitable work-around as soon as possible.

10.  The replace method of class String hangs if you provide a source
or target range that begins past the end of the String.  It should 
trigger a primitive error, and will be fixed in the next release.  This 
also affects methods that use replace, such as insert.

11.  Don't attempt to call the cleanup() method from a menu choice.
This causes the Actor activation stack to be invalid because functions
are moved by the cleanup.  This would normally be all right because Actor
relocates stack entries.  The problem is that the primitive that calls
Windows assumes that the function that it occurs in will not be relocated
before Windows returns.  Menu handling causes a WM_SYSCOMMAND message,
which causes a call to DefWindowProc, hence the problem.

12.  Expressions that add Int 2 to a Long will not be coerced if the value
overflows Int range (for example, 16382L + 2).  This is because the
failure functions for the inc2 and dec2 primitives were inadvertently
not being set at system startup.	 To fix this, just execute the 
following statements:

	CoercedOps := asOrderedCollection(CoercedOps);
	add(CoercedOps, #inc2);
	add(CoercedOps, #dec2);

Remember to do a cleanup() and snapshot.

13. We have written a SortedSet class, the class whose instances are
collections whose elements are unique and maintained in sorted order.
It is not documented in the manual, but you'll find it in your 
CLASSES directory (SORTEDSE.CLS) after you install Actor.

14. FileWindow objects will ignore accelerator keys.  To enable
them, change the line near the end of WM_COMMAND which reads

	default WM_COMMAND(self:EditWindow, wp, 0);

to

	default WM_COMMAND(self:EditWindow, wp, lp);

15. In the unlikely event that the Install program crashes, it will
print out an invalid phone number to call for Technical Support.  
Please refer to your Actor documentation for the correct phone number. 
*/ 
