blob: 762924a8c1d5860df614102c0cd96d7cbfda91c1 [file] [log] [blame]
Index: cvs-1.12.13/lib/openat.c
===================================================================
--- cvs-1.12.13.orig/lib/openat.c
+++ cvs-1.12.13/lib/openat.c
@@ -55,9 +55,13 @@ rpl_openat (int fd, char const *filename
va_list arg;
va_start (arg, flags);
- /* Assume that mode_t is passed compatibly with mode_t's type
- after argument promotion. */
- mode = va_arg (arg, mode_t);
+ /* If mode_t is narrower than int, use the promoted type (int),
+ not mode_t. Use sizeof to guess whether mode_t is nerrower;
+ we don't know of any practical counterexamples. */
+ if (sizeof (mode_t) < sizeof (int))
+ mode = va_arg (arg, int);
+ else
+ mode = va_arg (arg, mode_t);
va_end (arg);
}