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)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour