From 7ca890b88e6ab7624afb1742a9fffb37ad5b3fc3 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Wed, 24 Feb 2010 16:07:57 -0800 Subject: [PATCH] Fix reporting of I/O errors in *dprintf functions. --- ChangeLog | 5 +++++ libio/iovdprintf.c | 5 ++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/ChangeLog b/ChangeLog index 5271d24ac5..25691cd6ec 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,8 +1,13 @@ 2010-02-24 Ulrich Drepper + [BZ #11319] + * libio/iovdprintf.c (_IO_vdprintf): Explicitly flush stream before + undoing the stream because _IO_FINISH doesn't report failures. + [BZ #5553] * malloc/malloc.c (public_vALLOc): Set ar_ptr when trying main_arena. (public_pVALLOc): Likewise. + Patch by Petr Baudis. 2010-02-22 Jim Meyering diff --git a/libio/iovdprintf.c b/libio/iovdprintf.c index edab849a44..5284ff8938 100644 --- a/libio/iovdprintf.c +++ b/libio/iovdprintf.c @@ -1,4 +1,4 @@ -/* Copyright (C) 1995, 1997-2000, 2001, 2002, 2003, 2006 +/* Copyright (C) 1995, 1997-2000, 2001, 2002, 2003, 2006, 2010 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -60,6 +60,9 @@ _IO_vdprintf (d, format, arg) done = INTUSE(_IO_vfprintf) (&tmpfil.file, format, arg); + if (done != EOF && _IO_do_flush (&tmpfil.file) == EOF) + done = EOF; + _IO_FINISH (&tmpfil.file); return done;