From: Jarkko Hietaniemi <jhi@iki.fi>
Date: Tue, 11 Mar 2003 17:43:10 +0000 (+0000)
Subject: Uid_t and Gid_t can easily be shorts and one cannot
X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=commitdiff_plain;h=ab2b559bb5510413385bdf5e5398bcdfb293e40d;p=p5sagit%2Fp5-mst-13.2.git

Uid_t and Gid_t can easily be shorts and one cannot
pull shorts off the va_args, int is the shortest (ahem).

p4raw-id: //depot/perl@18919
---

diff --git a/reentr.c b/reentr.c
index 8b655da..8dddbe7 100644
--- a/reentr.c
+++ b/reentr.c
@@ -368,7 +368,11 @@ Perl_reentrant_retry(const char *f, ...)
 		    p0 = va_arg(ap, void *);
 		    retptr = getgrnam(p0); break;
 	        case OP_GGRGID:
+#if Gid_t_size < INTSIZE
+		    gid = (Gid_t)va_arg(ap, int);
+#else
 		    gid = va_arg(ap, Gid_t);
+#endif
 		    retptr = getgrgid(gid); break;
 	        case OP_GGRENT:
 		    retptr = getgrent(); break;
@@ -431,7 +435,11 @@ Perl_reentrant_retry(const char *f, ...)
 		    p0 = va_arg(ap, void *);
 		    retptr = getpwnam(p0); break;
 	        case OP_GPWUID:
+#if Uid_t_size < INTSIZE
+		    uid = (Uid_t)va_arg(ap, int);
+#else
 		    uid = va_arg(ap, Uid_t);
+#endif
 		    retptr = getpwuid(uid); break;
 	        case OP_GPWENT:
 		    retptr = getpwent(); break;
diff --git a/reentr.pl b/reentr.pl
index ee94c8d..4f9619e 100644
--- a/reentr.pl
+++ b/reentr.pl
@@ -851,7 +851,11 @@ Perl_reentrant_retry(const char *f, ...)
 		    p0 = va_arg(ap, void *);
 		    retptr = getgrnam(p0); break;
 	        case OP_GGRGID:
+#if Gid_t_size < INTSIZE
+		    gid = (Gid_t)va_arg(ap, int);
+#else
 		    gid = va_arg(ap, Gid_t);
+#endif
 		    retptr = getgrgid(gid); break;
 	        case OP_GGRENT:
 		    retptr = getgrent(); break;
@@ -914,7 +918,11 @@ Perl_reentrant_retry(const char *f, ...)
 		    p0 = va_arg(ap, void *);
 		    retptr = getpwnam(p0); break;
 	        case OP_GPWUID:
+#if Uid_t_size < INTSIZE
+		    uid = (Uid_t)va_arg(ap, int);
+#else
 		    uid = va_arg(ap, Uid_t);
+#endif
 		    retptr = getpwuid(uid); break;
 	        case OP_GPWENT:
 		    retptr = getpwent(); break;