This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Implement DIR* cloning on Windows
authorJan Dubois <jand@activestate.com>
Mon, 25 Oct 2010 22:50:27 +0000 (15:50 -0700)
committerJan Dubois <jand@activestate.com>
Mon, 25 Oct 2010 22:59:49 +0000 (15:59 -0700)
commit60b22aca14742ead2388ca3c7bb4b542a2d9a4b1
tree16381f46b798b66e9e1507ba4aff1c54d2488c7d
parent0936ef8b60a303fb904c7a44b7e4f55e8191503c
Implement DIR* cloning on Windows

There doesn't seem to be a mechanism to clone FileFind handles on
Windows.  Therefore this implementation just reads all remaining
entries into a cache buffer and closes the handle.  All further
readdir() requests will be fulfilled from the cache buffer, in both
the original and the new interpreter.

This fixes bug 75154 on Windows (all tests in t/op/threads-dirh.t pass).

This commit also changes the return value of win32_telldir() to -1
for directory handles that have been read until the end.  The previous
return value was (NULL - dirp->start), which technically is not
valid C code.

API change alert: Perl_dirp_dup() gets an additional CLONE_PARAMS
parameter in this change (like all the other Perl_*_dup() functions).
embed.fnc
embed.h
proto.h
sv.c
t/op/threads-dirh.t
win32/win32.c
win32/win32iop.h