X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=ext%2FDynaLoader%2Fdl_dlopen.xs;h=dfa9d0675a7942f7a8fd2f4ecb3e9eae9d742127;hb=12c541f435c0fde6414e8942d051e05098e0253e;hp=5978bfd0378adfeec0f863e4daa804ca87fe8ec6;hpb=8141890a98cb18fe79a9b720aaed544527266f99;p=p5sagit%2Fp5-mst-13.2.git diff --git a/ext/DynaLoader/dl_dlopen.xs b/ext/DynaLoader/dl_dlopen.xs index 5978bfd..dfa9d06 100644 --- a/ext/DynaLoader/dl_dlopen.xs +++ b/ext/DynaLoader/dl_dlopen.xs @@ -246,13 +246,14 @@ void dl_install_xsub(perl_name, symref, filename="$Package") char * perl_name void * symref - char * filename + const char * filename CODE: DLDEBUG(2,PerlIO_printf(Perl_debug_log, "dl_install_xsub(name=%s, symref=%"UVxf")\n", perl_name, PTR2UV(symref))); - ST(0) = sv_2mortal(newRV((SV*)newXS(perl_name, - DPTR2FPTR(XSUBADDR_t, symref), - filename))); + ST(0) = sv_2mortal(newRV((SV*)newXS_flags(perl_name, + DPTR2FPTR(XSUBADDR_t, symref), + filename, NULL, + XS_DYNAMIC_FILENAME))); char * @@ -263,4 +264,19 @@ dl_error() OUTPUT: RETVAL +#if defined(USE_ITHREADS) + +void +CLONE(...) + CODE: + MY_CXT_CLONE; + + /* MY_CXT_CLONE just does a memcpy on the whole structure, so to avoid + * using Perl variables that belong to another thread, we create our + * own for this thread. + */ + MY_CXT.x_dl_last_error = newSVpvn("", 0); + +#endif + # end.