mirror of
git://sourceware.org/git/glibc.git
synced 2025-01-18 12:16:13 +08:00
Don't lock string streams in stream cleanup code
This commit is contained in:
parent
f3cdd46748
commit
f22e10748f
@ -1,3 +1,9 @@
|
||||
2011-09-09 Ulrich Drepper <drepper@gmail.com>
|
||||
|
||||
[BZ #12847]
|
||||
* libio/genops.c (INTDEF): For string streams the _lock pointer can
|
||||
be NULL. Don't lock in this case.
|
||||
|
||||
2011-07-29 Denis Zaitceff <zaitceff@gmail.com>
|
||||
|
||||
* string/strncat.c (strncat): Undef the symbol in case it has been
|
||||
|
4
NEWS
4
NEWS
@ -9,8 +9,8 @@ Version 2.15
|
||||
|
||||
* The following bugs are resolved with this release:
|
||||
|
||||
9696, 12403, 12868, 12852, 12874, 12885, 12907, 12922, 12935, 13007,
|
||||
13021, 13068, 13092, 13114, 13118, 13123, 13134, 13150
|
||||
9696, 12403, 12847, 12868, 12852, 12874, 12885, 12907, 12922, 12935,
|
||||
13007, 13021, 13068, 13092, 13114, 13118, 13123, 13134, 13150
|
||||
|
||||
* New program pldd to list loaded object of a process
|
||||
Implemented by Ulrich Drepper.
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* Copyright (C) 1993,1995,1997-2002, 2003, 2004, 2006, 2007
|
||||
/* Copyright (C) 1993,1995,1997-2002, 2003, 2004, 2006, 2007, 2011
|
||||
Free Software Foundation, Inc.
|
||||
This file is part of the GNU C Library.
|
||||
|
||||
@ -471,7 +471,7 @@ _IO_default_xsputn (f, data, n)
|
||||
f->_IO_write_ptr += count;
|
||||
#endif
|
||||
s += count;
|
||||
}
|
||||
}
|
||||
else if (count)
|
||||
{
|
||||
char *p = f->_IO_write_ptr;
|
||||
@ -479,9 +479,9 @@ _IO_default_xsputn (f, data, n)
|
||||
for (i = count; --i >= 0; )
|
||||
*p++ = *s++;
|
||||
f->_IO_write_ptr = p;
|
||||
}
|
||||
}
|
||||
more -= count;
|
||||
}
|
||||
}
|
||||
if (more == 0 || _IO_OVERFLOW (f, (unsigned char) *s++) == EOF)
|
||||
break;
|
||||
more--;
|
||||
@ -534,9 +534,9 @@ _IO_default_xsgetn (fp, data, n)
|
||||
while (--i >= 0)
|
||||
*s++ = *p++;
|
||||
fp->_IO_read_ptr = p;
|
||||
}
|
||||
more -= count;
|
||||
}
|
||||
}
|
||||
more -= count;
|
||||
}
|
||||
if (more == 0 || __underflow (fp) == EOF)
|
||||
break;
|
||||
}
|
||||
@ -959,7 +959,7 @@ _IO_unbuffer_write (void)
|
||||
int cnt;
|
||||
#define MAXTRIES 2
|
||||
for (cnt = 0; cnt < MAXTRIES; ++cnt)
|
||||
if (_IO_lock_trylock (*fp->_lock) == 0)
|
||||
if (fp->_lock == NULL || _IO_lock_trylock (*fp->_lock) == 0)
|
||||
break;
|
||||
else
|
||||
/* Give the other thread time to finish up its use of the
|
||||
@ -978,7 +978,7 @@ _IO_unbuffer_write (void)
|
||||
|
||||
_IO_SETBUF (fp, NULL, 0);
|
||||
|
||||
if (cnt < MAXTRIES)
|
||||
if (cnt < MAXTRIES && fp->_lock != NULL)
|
||||
_IO_lock_unlock (*fp->_lock);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user