Hi gents,

I'll add a test case for ASORT() plus a comment to the
AEVAL() test as below, and exclude it to not pollute our
hbtest results.

Brgds,
Viktor

On 2008.09.08., at 21:33, Przemyslaw Czerpak wrote:

On Mon, 08 Sep 2008, Saulius Zrelskis wrote:

Hi Saulius,

It seems that Clipper use a cloned copy of the original array to do the
loop,
and supply these orininal values to the codeblock. Bug or a feature?
Clipper uses original array, but <nCount> value calculates before loop
through array
and never recalculated. After resizing array run garbage collection (Memory(
-1 )) and see what's happening...

Exactly. It's a bug in Clipper. In the moment when garbage collector is activated directly by memory(-1) or indirectly by heavy memory usage or
or VM (evaluated pcode counter or asynchronous event like interrupt)
Clipper GPFs with this code so it's not safe in Clipper to create and
execute such constructions.
In Harbour it's safe but resize operation immediately effects AEVAL()/
ASCAN() range. IMHO it's OK. We should only fix ASORT() which is not
safe and GPFs when sort block resize the array.
In xHarbour Clipper's behavior is partially emulated but not exactly
and it's even possible to create exploit for this emulation which
will cause GPF.

best regards,
Przemek
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to