aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog6
-rw-r--r--NEWS4
-rw-r--r--libio/genops.c18
-rw-r--r--stdio-common/vfscanf.c10
4 files changed, 22 insertions, 16 deletions
diff --git a/ChangeLog b/ChangeLog
index 98661dc2b1..01d890561c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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-09-09 Roland McGrath <roland@hack.frob.com>
* elf/elf.h (ELFOSABI_GNU): New macro.
diff --git a/NEWS b/NEWS
index e42adbc1c3..9fa55ca6e2 100644
--- a/NEWS
+++ b/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.
diff --git a/libio/genops.c b/libio/genops.c
index 481fbc52b0..5d21c42404 100644
--- a/libio/genops.c
+++ b/libio/genops.c
@@ -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);
}
diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
index 7356eeb362..9d312d55aa 100644
--- a/stdio-common/vfscanf.c
+++ b/stdio-common/vfscanf.c
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2006, 2007, 2010 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2006, 2007, 2010, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -48,7 +48,7 @@
#if INT_MAX == LONG_MAX
# define need_long 0
#else
-# define need_long 1
+# define need_long 1
#endif
/* Those are flags in the conversion format. */
@@ -102,9 +102,9 @@
# define __strtof_internal __wcstof_internal
# define L_(Str) L##Str
-# define CHAR_T wchar_t
+# define CHAR_T wchar_t
# define UCHAR_T unsigned int
-# define WINT_T wint_t
+# define WINT_T wint_t
# undef EOF
# define EOF WEOF
#else
@@ -128,7 +128,7 @@
return EOF
# define L_(Str) Str
-# define CHAR_T char
+# define CHAR_T char
# define UCHAR_T unsigned char
# define WINT_T int
#endif