diff options
author | Bruno Haible <bruno@clisp.org> | 2009-05-22 13:48:52 +0200 |
---|---|---|
committer | Bruno Haible <bruno@clisp.org> | 2009-05-22 13:48:52 +0200 |
commit | 2514e7d5af226b15be3f737286b3ff8c0c91d761 (patch) | |
tree | eedd63aebf8b8bcfc0b12a1ba51e490d88a71e5b /lib/open-safer.c | |
parent | 3663b6b7a51eb4ccb3a3340c71b1aa8e3f51c274 (diff) | |
download | gnulib-2514e7d5af226b15be3f737286b3ff8c0c91d761.tar.gz |
Simplify use of mode_t varargs.
Diffstat (limited to 'lib/open-safer.c')
-rw-r--r-- | lib/open-safer.c | 12 |
1 files changed, 4 insertions, 8 deletions
diff --git a/lib/open-safer.c b/lib/open-safer.c index 15bf6a65d0..48d558fa57 100644 --- a/lib/open-safer.c +++ b/lib/open-safer.c @@ -1,6 +1,6 @@ /* Invoke open, but avoid some glitches. - Copyright (C) 2005, 2006, 2008 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2008-2009 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -35,13 +35,9 @@ open_safer (char const *file, int flags, ...) va_list ap; va_start (ap, flags); - /* Assume mode_t promotes to int if and only if it is smaller. - This assumption isn't guaranteed by the C standard, but we - don't know of any real-world counterexamples. */ - if (sizeof (mode_t) < sizeof (int)) - mode = va_arg (ap, int); - else - mode = va_arg (ap, mode_t); + /* We have to use PROMOTED_MODE_T instead of mode_t, otherwise GCC 4 + creates crashing code when 'mode_t' is smaller than 'int'. */ + mode = va_arg (ap, PROMOTED_MODE_T); va_end (ap); } |