diff options
Diffstat (limited to 'win32')
-rw-r--r-- | win32/perllib.c | 8 | ||||
-rw-r--r-- | win32/win32.c | 16 |
2 files changed, 23 insertions, 1 deletions
diff --git a/win32/perllib.c b/win32/perllib.c index e8d59cdf36..0480ae3786 100644 --- a/win32/perllib.c +++ b/win32/perllib.c @@ -1556,7 +1556,15 @@ RunPerl(int argc, char **argv, char **env) exitstatus = perl_parse(my_perl, xs_init, argc, argv, env); if (!exitstatus) { +#ifdef USE_ITHREADS /* XXXXXX testing */ +extern PerlInterpreter * perl_clone(pTHXx_ IV flags); + + PerlInterpreter *new_perl = perl_clone(my_perl, 0); + exitstatus = perl_run( new_perl ); + /* perl_destruct(new_perl); perl_free(new_perl); */ +#else exitstatus = perl_run( my_perl ); +#endif } perl_destruct( my_perl ); diff --git a/win32/win32.c b/win32/win32.c index cf341cdb62..d3a7b404f7 100644 --- a/win32/win32.c +++ b/win32/win32.c @@ -3331,6 +3331,21 @@ Perl_win32_init(int *argcp, char ***argvp) MALLOC_INIT; } +#ifdef USE_ITHREADS +void +Perl_sys_intern_dup(pTHX_ struct interp_intern *src, struct interp_intern *dst) +{ + dst->perlshell_tokens = Nullch; + dst->perlshell_vec = (char**)NULL; + dst->perlshell_items = 0; + dst->fdpid = newAV(); + New(1313, dst->children, 1, child_tab); + dst->children->num = 0; + dst->hostlist = src->hostlist; /* XXX */ + dst->thr_intern.Winit_socktype = src->thr_intern.Winit_socktype; +} +#endif + #ifdef USE_BINMODE_SCRIPTS void @@ -3355,4 +3370,3 @@ win32_strip_return(SV *sv) } #endif - |