From dea958bc0612f79a603e4a8a915c8beeafc464e1 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Tue, 10 Jan 2006 17:09:43 +0000 Subject: 2006-01-10 Eric Blake * libc/stdio/freopen.c (_freopen_r): Fix use of oflags. * libc/stdio64/freopen64.c (_freopen64_r): Likewise. --- newlib/libc/stdio/freopen.c | 7 ++++--- newlib/libc/stdio64/freopen64.c | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) (limited to 'newlib/libc') diff --git a/newlib/libc/stdio/freopen.c b/newlib/libc/stdio/freopen.c index ec195c819..d5582d421 100644 --- a/newlib/libc/stdio/freopen.c +++ b/newlib/libc/stdio/freopen.c @@ -146,14 +146,15 @@ _DEFUN(_freopen_r, (ptr, file, mode, fp), else { #ifdef HAVE_FCNTL + int oldflags; /* * Reuse the file descriptor, but only if the access mode is * unchanged. F_SETFL correctly ignores creation flags. */ f = fp->_file; - if ((oflags = _fcntl_r (ptr, f, F_GETFL, 0)) == -1 - || ((oflags ^ flags) & O_ACCMODE) != 0 - || _fcntl_r (ptr, f, F_SETFL, flags) == -1) + if ((oldflags = _fcntl_r (ptr, f, F_GETFL, 0)) == -1 + || ((oldflags ^ oflags) & O_ACCMODE) != 0 + || _fcntl_r (ptr, f, F_SETFL, oflags) == -1) f = -1; #else /* We cannot modify without fcntl support. */ diff --git a/newlib/libc/stdio64/freopen64.c b/newlib/libc/stdio64/freopen64.c index 1f691f645..8acb957da 100644 --- a/newlib/libc/stdio64/freopen64.c +++ b/newlib/libc/stdio64/freopen64.c @@ -146,14 +146,15 @@ _DEFUN (_freopen64_r, (ptr, file, mode, fp), else { #ifdef HAVE_FCNTL + int oldflags; /* * Reuse the file descriptor, but only if the access mode is * unchanged. F_SETFL correctly ignores creation flags. */ f = fp->_file; - if ((oflags = _fcntl_r (ptr, f, F_GETFL, 0)) == -1 - || ((oflags ^ flags) & O_ACCMODE) != 0 - || _fcntl_r (ptr, f, F_SETFL, flags) == -1) + if ((oldflags = _fcntl_r (ptr, f, F_GETFL, 0)) == -1 + || ((oldflags ^ oflags) & O_ACCMODE) != 0 + || _fcntl_r (ptr, f, F_SETFL, oflags) == -1) f = -1; #else /* We cannot modify without fcntl support. */ -- cgit v1.2.3