Hi,

Not this time. We do not have any protection against closing WA
from any user code (i.e. key/for/filter/relation expressions or
from error handler) when it's used by RDD code :-(

Yes, I understand the problem. I've used to call DBCLOSEAREA() in my error block. This exploits the problem of WA protection against close.

Usually (in applications I've ever developed) the lack of WA protection is not a big problem. Do you think it's worth to add WA locking to Harbour?


Anyhow looking at your example I can see that one of them generates
internal error due to illegal value returned by error block.
This is also expected and Clipper compatible behavior.
Here is reduced example you can test also in Clipper:

    PROC MAIN()
       ErrorBlock( {|| NIL } )
       BEGIN SEQUENCE
          ? array(0)[1]
       END SEQUENCE
    RETURN

I've just used this error block behavior in make a small self contained sample. But the only the difference between test203 and test204 was open mode (shared vs exclusive), and this difference generates very different internal error, so, I've send both sample to indicate memory corruption problem.

Since array access is not recoverable error, block should not return at all, i.e., it should call BREAK() or __QUIT(). Am I right?


Thanks for your deep tests, regards,
Mindaugas
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour

Reply via email to