Mark Miesfeld - 2007-03-24

Logged In: YES
Originator: YES

This was not a race condition as I first thought, but rather a heap corruption problem caused by ooDialog.

ooDialog tracks a number of items using pre-allocated tables. For one of the tables, entries were added without checking whether the end of the table had been reached.

The fix is committed with SVN revision 179 and consists of:

1.) Adding a check for the end of the color table.

2.) Adding error messages when the user reaches the limit of any of the pre-allocated table entries so that the user will understand what failed.

3.) Changing and redistributing the max table entries to allow larger ooDialog programs to be run without increasing the size (by much) of the static memory allocations.

A future enhancement would be to allow the ooRexx programmer to increase the number of table entries programmatically to remove the current restriction on the size of an ooDialog application.