On Sat, Aug 9, 2008 at 5:21 AM, Dan McGee <[EMAIL PROTECTED]> wrote: > Due to differences in handling va_list between i686 and x86_64, this bug > can only be seen on x86_64. va_list usage is not allowed but we had been > getting away with it. See > http://lists.opensuse.org/opensuse-programming/2008-02/msg00005.html > for details and explanation. > > This fixes FS#11096. > > Signed-off-by: Dan McGee <[EMAIL PROTECTED]> > --- > lib/libalpm/util.c | 11 +++++++++-- > 1 files changed, 9 insertions(+), 2 deletions(-) > > diff --git a/lib/libalpm/util.c b/lib/libalpm/util.c > index c38dfb5..2847db7 100644 > --- a/lib/libalpm/util.c > +++ b/lib/libalpm/util.c > @@ -25,6 +25,7 @@ > > #include <stdio.h> > #include <stdlib.h> > +#include <stdarg.h> > #include <string.h> > #include <fcntl.h> > #include <unistd.h> > @@ -401,12 +402,18 @@ int _alpm_rmrf(const char *path) > return(0); > } > > -int _alpm_logaction(unsigned short usesyslog, FILE *f, const char *fmt, > va_list args) > +int _alpm_logaction(unsigned short usesyslog, FILE *f, > + const char *fmt, va_list args) > { > int ret = 0; > > if(usesyslog) { > - vsyslog(LOG_WARNING, fmt, args); > + /* we can't use a va_list more than once, so we need to copy > it > + * so we can use the original when calling vfprintf below. */ > + va_list args_syslog; > + va_copy(args_syslog, args); > + vsyslog(LOG_WARNING, fmt, args_syslog); > + va_end(args_syslog); > } > > if(f) {
Why don't we need to run va_start and va_end on args, as in the example on opensuse ML? _______________________________________________ pacman-dev mailing list [email protected] http://archlinux.org/mailman/listinfo/pacman-dev
