Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 9 Jul 1999 22:22:21 +0000 (22:22 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 9 Jul 1999 22:22:21 +0000 (22:22 +0000)
1999-07-09  Ulrich Drepper  <drepper@cygnus.com>

* stdio-common/vfprintf.c (buffered_vfprintf): Add locking.

ChangeLog
linuxthreads/ChangeLog
linuxthreads/oldsemaphore.c
stdio-common/vfprintf.c

index b22b915..01e50e5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+1999-07-09  Ulrich Drepper  <drepper@cygnus.com>
+
+       * stdio-common/vfprintf.c (buffered_vfprintf): Add locking.
+
 1999-07-09  H.J. Lu  <hjl@gnu.org>
 
        * Versions.def (GLIBC_2.1.2): Added.
index 5012b24..8432d2d 100644 (file)
@@ -1,3 +1,8 @@
+1999-07-09  Ulrich Drepper  <drepper@cygnus.com>
+
+       * oldsemaphore.c (sem_compare_and_swap): Fix use of compare and
+       swap function.
+
 1999-07-09  Cristian Gafton  <gafton@redhat.com>
 
        * Makefile (libpthread-routines): Add oldsemaphore routine.
index 5a19a45..72d12d2 100644 (file)
@@ -37,7 +37,7 @@ typedef struct {
 
 static inline int sem_compare_and_swap(old_sem_t *sem, long oldval, long newval)
 {
-    return __pthread_compare_and_swap(&sem->sem_status, oldval, newval, &sem->sem_spinlock);
+    return compare_and_swap(&sem->sem_status, oldval, newval, &sem->sem_spinlock);
 }
 
 /* The state of a semaphore is represented by a long int encoding
@@ -212,4 +212,3 @@ symbol_version (__old_sem_post, sem_post, GLIBC_2.0);
 symbol_version (__old_sem_getvalue, sem_getvalue, GLIBC_2.0);
 symbol_version (__old_sem_destroy, sem_destroy, GLIBC_2.0);
 #endif
-
index f167058..902a70d 100644 (file)
@@ -1886,6 +1886,10 @@ buffered_vfprintf (register _IO_FILE *s, const CHAR_T *format,
   /* Now print to helper instead.  */
   result = vfprintf (hp, format, args);
 
+  /* Lock stream.  */
+  __libc_cleanup_region_start ((void (*) (void *)) &_IO_funlockfile, s);
+  _IO_flockfile (s);
+
   /* Now flush anything from the helper to the S. */
 #ifdef COMPILE_WPRINTF
   if ((to_flush = (hp->_wide_data->_IO_write_ptr
@@ -1893,16 +1897,20 @@ buffered_vfprintf (register _IO_FILE *s, const CHAR_T *format,
     {
       if ((int) _IO_sputn (s, hp->_wide_data->_IO_write_base, to_flush)
          != to_flush)
-       return -1;
+       result = -1;
     }
 #else
   if ((to_flush = hp->_IO_write_ptr - hp->_IO_write_base) > 0)
     {
       if ((int) _IO_sputn (s, hp->_IO_write_base, to_flush) != to_flush)
-       return -1;
+       result = -1;
     }
 #endif
 
+  /* Unlock the stream.  */
+  _IO_funlockfile (s);
+  __libc_cleanup_region_end (0);
+
   return result;
 }