summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-vcs/cvs/files/cvs-1.12.13-openat.patch')
-rw-r--r--dev-vcs/cvs/files/cvs-1.12.13-openat.patch21
1 files changed, 21 insertions, 0 deletions
diff --git a/dev-vcs/cvs/files/cvs-1.12.13-openat.patch b/dev-vcs/cvs/files/cvs-1.12.13-openat.patch
new file mode 100644
index 000000000000..762924a8c1d5
--- /dev/null
+++ b/dev-vcs/cvs/files/cvs-1.12.13-openat.patch
@@ -0,0 +1,21 @@
+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);
+ }