X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=reentr.pl;h=339529fcdb1f083454e2b077129405bbc9624984;hb=9f9d9dc0a4872096e1675c61f2f645e451c07518;hp=ee94c8d64115db520e9c77bd14750b6b3a231d1e;hpb=a845a0d454e0f00755bd9ac955d4d658c0af2872;p=p5sagit%2Fp5-mst-13.2.git diff --git a/reentr.pl b/reentr.pl index ee94c8d..339529f 100644 --- a/reentr.pl +++ b/reentr.pl @@ -41,7 +41,7 @@ print <_${func}_struct.initialized = 0; - /* work around glibc-2.2.5 bug */ - PL_reentrant_buffer->_${func}_struct.current_saltbits = 0; +#if CRYPT_R_PROTO != REENTRANT_PROTO_B_CCD + PL_reentrant_buffer->_${func}_struct_buffer = 0; +#endif +EOF + push @free, <_${func}_struct_buffer); #endif EOF pushssif $endif; @@ -661,9 +665,11 @@ EOF $_ eq 'D' ? "&PL_reentrant_buffer->_${genfunc}_data" : $_ eq 'S' ? - ($func =~ /^readdir/ ? + ($func =~ /^readdir\d*$/ ? "PL_reentrant_buffer->_${genfunc}_struct" : - "&PL_reentrant_buffer->_${genfunc}_struct" ) : + $func =~ /^crypt$/ ? + "PL_reentrant_buffer->_${genfunc}_struct_buffer" : + "&PL_reentrant_buffer->_${genfunc}_struct") : $_ eq 'T' && $func eq 'drand48' ? "&PL_reentrant_buffer->_${genfunc}_double" : $_ =~ /^[ilt]$/ && $func eq 'random' ? @@ -673,7 +679,7 @@ EOF $w = ", $w" if length $v; } my $call = "${func}_r($v$w)"; - $call = "((errno = $call))" if $r eq 'I' && $func ne 'random'; + $call = "((PL_reentrant_retint = $call))" if $r eq 'I' && $func ne 'random'; push @wrap, < 0 && PL_reentrant_retint == ERANGE) || (errno == ERANGE)) ? Perl_reentrant_retry("$func"$rv) : 0)) +EOF + } else { + push @wrap, <