X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/3d7c117d5246fe5390f3fda7bd31308799d54201..ffd62fc2fb74955cac5af41e7b3820e09877c3b4:/regen/reentr.pl diff --git a/regen/reentr.pl b/regen/reentr.pl index 564a68f..0dbb79b 100644 --- a/regen/reentr.pl +++ b/regen/reentr.pl @@ -62,8 +62,8 @@ sub open_print_header { my $h = open_print_header('reentr.h'); print $h < 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 24)) +# undef HAS_READDIR_R +# undef HAS_READDIR64_R +#endif + /* * As of OpenBSD 3.7, reentrant functions are now working, they just are * incompatible with everyone else. To make OpenBSD happy, we have to @@ -198,7 +203,7 @@ while () { # Read in the protoypes. } # If given the -U option open up the metaconfig unit for this function. - if ($opts{U} && open(U, ">d_${func}_r.U")) { + if ($opts{U} && open(U, ">", "d_${func}_r.U")) { binmode U; } @@ -535,16 +540,12 @@ EOF PL_reentrant_buffer->$sz = sysconf($sc); if (PL_reentrant_buffer->$sz == (size_t) -1) PL_reentrant_buffer->$sz = REENTRANTUSUALSIZE; -# else -# if defined(__osf__) && defined(__alpha) && defined(SIABUFSIZ) +# elif defined(__osf__) && defined(__alpha) && defined(SIABUFSIZ) PL_reentrant_buffer->$sz = SIABUFSIZ; -# else -# ifdef __sgi +# elif defined(__sgi) PL_reentrant_buffer->$sz = BUFSIZ; -# else +# else PL_reentrant_buffer->$sz = REENTRANTUSUALSIZE; -# endif -# endif # endif EOF pushinitfree $genfunc; @@ -773,6 +774,13 @@ print $c <<"EOF"; #include "perl.h" #include "reentr.h" +#define RenewDouble(data_pointer, size_pointer, type) \\ + STMT_START { \\ + const size_t size = *(size_pointer) * 2; \\ + Renew((data_pointer), (size), type); \\ + *(size_pointer) = size; \\ + } STMT_END + void Perl_reentrant_size(pTHX) { PERL_UNUSED_CONTEXT; @@ -840,9 +848,8 @@ Perl_reentrant_retry(const char *f, ...) PERL_REENTRANT_MAXSIZE / 2) #endif { - PL_reentrant_buffer->_hostent_size *= 2; - Renew(PL_reentrant_buffer->_hostent_buffer, - PL_reentrant_buffer->_hostent_size, char); + RenewDouble(PL_reentrant_buffer->_hostent_buffer, + &PL_reentrant_buffer->_hostent_size, char); switch (PL_op->op_type) { case OP_GHBYADDR: p0 = va_arg(ap, void *); @@ -873,9 +880,8 @@ Perl_reentrant_retry(const char *f, ...) #endif { Gid_t gid; - PL_reentrant_buffer->_grent_size *= 2; - Renew(PL_reentrant_buffer->_grent_buffer, - PL_reentrant_buffer->_grent_size, char); + RenewDouble(PL_reentrant_buffer->_grent_buffer, + &PL_reentrant_buffer->_grent_size, char); switch (PL_op->op_type) { case OP_GGRNAM: p0 = va_arg(ap, void *); @@ -908,9 +914,8 @@ Perl_reentrant_retry(const char *f, ...) #endif { Netdb_net_t net; - PL_reentrant_buffer->_netent_size *= 2; - Renew(PL_reentrant_buffer->_netent_buffer, - PL_reentrant_buffer->_netent_size, char); + RenewDouble(PL_reentrant_buffer->_netent_buffer, + &PL_reentrant_buffer->_netent_size, char); switch (PL_op->op_type) { case OP_GNBYADDR: net = va_arg(ap, Netdb_net_t); @@ -940,9 +945,8 @@ Perl_reentrant_retry(const char *f, ...) #endif { Uid_t uid; - PL_reentrant_buffer->_pwent_size *= 2; - Renew(PL_reentrant_buffer->_pwent_buffer, - PL_reentrant_buffer->_pwent_size, char); + RenewDouble(PL_reentrant_buffer->_pwent_buffer, + &PL_reentrant_buffer->_pwent_size, char); switch (PL_op->op_type) { case OP_GPWNAM: p0 = va_arg(ap, void *); @@ -976,9 +980,8 @@ Perl_reentrant_retry(const char *f, ...) PERL_REENTRANT_MAXSIZE / 2) #endif { - PL_reentrant_buffer->_protoent_size *= 2; - Renew(PL_reentrant_buffer->_protoent_buffer, - PL_reentrant_buffer->_protoent_size, char); + RenewDouble(PL_reentrant_buffer->_protoent_buffer, + &PL_reentrant_buffer->_protoent_size, char); switch (PL_op->op_type) { case OP_GPBYNAME: p0 = va_arg(ap, void *); @@ -1006,9 +1009,8 @@ Perl_reentrant_retry(const char *f, ...) PERL_REENTRANT_MAXSIZE / 2) #endif { - PL_reentrant_buffer->_servent_size *= 2; - Renew(PL_reentrant_buffer->_servent_buffer, - PL_reentrant_buffer->_servent_size, char); + RenewDouble(PL_reentrant_buffer->_servent_buffer, + &PL_reentrant_buffer->_servent_size, char); switch (PL_op->op_type) { case OP_GSBYNAME: p0 = va_arg(ap, void *);