summaryrefslogtreecommitdiff
path: root/embed.fnc
diff options
context:
space:
mode:
authorJan Dubois <jand@activestate.com>2010-10-25 15:50:27 -0700
committerJan Dubois <jand@activestate.com>2010-10-25 15:59:49 -0700
commit60b22aca14742ead2388ca3c7bb4b542a2d9a4b1 (patch)
tree16381f46b798b66e9e1507ba4aff1c54d2488c7d /embed.fnc
parent0936ef8b60a303fb904c7a44b7e4f55e8191503c (diff)
downloadperl-60b22aca14742ead2388ca3c7bb4b542a2d9a4b1.tar.gz
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).
Diffstat (limited to 'embed.fnc')
-rw-r--r--embed.fnc2
1 files changed, 1 insertions, 1 deletions
diff --git a/embed.fnc b/embed.fnc
index 340d86d635..e08b76ac33 100644
--- a/embed.fnc
+++ b/embed.fnc
@@ -1450,7 +1450,7 @@ ApR |HEK* |hek_dup |NULLOK HEK* e|NN CLONE_PARAMS* param
Ap |void |re_dup_guts |NN const REGEXP *sstr|NN REGEXP *dstr \
|NN CLONE_PARAMS* param
Ap |PerlIO*|fp_dup |NULLOK PerlIO *const fp|const char type|NN CLONE_PARAMS *const param
-ApR |DIR* |dirp_dup |NULLOK DIR *const dp
+ApR |DIR* |dirp_dup |NULLOK DIR *const dp|NN CLONE_PARAMS *const param
ApR |GP* |gp_dup |NULLOK GP *const gp|NN CLONE_PARAMS *const param
ApR |MAGIC* |mg_dup |NULLOK MAGIC *mg|NN CLONE_PARAMS *const param
#if defined(PERL_IN_SV_C)