From a167bcd8e59baf24d5a200d0c3e31817433974c6 Mon Sep 17 00:00:00 2001 From: Jeff Johnston Date: Fri, 16 Mar 2007 20:05:10 +0000 Subject: [PATCH] 2007-03-16 Eric Blake * libc/stdio64/fseek064.c (_fseeko64_r): Fix reentrancy. * libc/stdio64/freopen64.c (_freopen64_r): Ditto. --- newlib/ChangeLog | 5 +++++ newlib/libc/stdio64/freopen64.c | 4 ++-- newlib/libc/stdio64/fseeko64.c | 10 +++++----- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/newlib/ChangeLog b/newlib/ChangeLog index 62fb9d22d..df161dcf0 100644 --- a/newlib/ChangeLog +++ b/newlib/ChangeLog @@ -1,3 +1,8 @@ +2007-03-16 Eric Blake + + * libc/stdio64/fseek064.c (_fseeko64_r): Fix reentrancy. + * libc/stdio64/freopen64.c (_freopen64_r): Ditto. + 2007-03-15 Jeff Johnston * configure.in: Add new --enable-newlib-reent-small option. diff --git a/newlib/libc/stdio64/freopen64.c b/newlib/libc/stdio64/freopen64.c index c795cba44..4cc717261 100644 --- a/newlib/libc/stdio64/freopen64.c +++ b/newlib/libc/stdio64/freopen64.c @@ -196,10 +196,10 @@ _DEFUN (_freopen64_r, (ptr, file, mode, fp), fp->_bf._size = 0; fp->_lbfsize = 0; if (HASUB (fp)) - FREEUB (fp); + FREEUB (ptr, fp); fp->_ub._size = 0; if (HASLB (fp)) - FREELB (fp); + FREELB (ptr, fp); fp->_lb._size = 0; if (f < 0) diff --git a/newlib/libc/stdio64/fseeko64.c b/newlib/libc/stdio64/fseeko64.c index fe7e9be06..15f285f40 100644 --- a/newlib/libc/stdio64/fseeko64.c +++ b/newlib/libc/stdio64/fseeko64.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 1990 The Regents of the University of California. + * Copyright (c) 1990, 2007 The Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are permitted @@ -197,7 +197,7 @@ _DEFUN (_fseeko64_r, (ptr, fp, offset, whence), */ if (fp->_bf._base == NULL) - __smakebuf (fp); + __smakebuf_r (ptr, fp); if (fp->_flags & (__SWR | __SRW | __SNBF | __SNPT)) goto dumb; if ((fp->_flags & __SOPT) == 0) @@ -283,7 +283,7 @@ _DEFUN (_fseeko64_r, (ptr, fp, offset, whence), fp->_p = fp->_bf._base + o; fp->_r = n - o; if (HASUB (fp)) - FREEUB (fp); + FREEUB (ptr, fp); fp->_flags &= ~__SEOF; _funlockfile(fp); return 0; @@ -304,7 +304,7 @@ _DEFUN (_fseeko64_r, (ptr, fp, offset, whence), fp->_r = 0; fp->_p = fp->_bf._base; if (HASUB (fp)) - FREEUB (fp); + FREEUB (ptr, fp); fp->_flags &= ~__SEOF; n = target - curoff; if (n) @@ -330,7 +330,7 @@ dumb: } /* success: clear EOF indicator and discard ungetc() data */ if (HASUB (fp)) - FREEUB (fp); + FREEUB (ptr, fp); fp->_p = fp->_bf._base; fp->_r = 0; /* fp->_w = 0; *//* unnecessary (I think...) */