Update.
authorUlrich Drepper <drepper@redhat.com>
Sun, 7 May 2000 22:04:36 +0000 (22:04 +0000)
committerUlrich Drepper <drepper@redhat.com>
Sun, 7 May 2000 22:04:36 +0000 (22:04 +0000)
(ucs4_internal_loop): Likewise.
(ucs4_internal_loop_unaligned): Likewise.
(internal_ucs4le_loop): Likewise.
(internal_ucs4le_loop_unaligned): Likewise.
(ucs4le_internal_loop): Likewise.
(ucs4le_internal_loop_unaligned): Likewise.

ChangeLog
iconv/gconv_simple.c
linuxthreads/ChangeLog

index 4557c9f..9a63b24 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,12 @@
        * iconv/tst-iconv1.c: New file.
        * iconv/gconv_simple.c (internal_ucs4_loop): Prefer reporting
        empty input buffer over full output buffer.
+       (ucs4_internal_loop): Likewise.
+       (ucs4_internal_loop_unaligned): Likewise.
+       (internal_ucs4le_loop): Likewise.
+       (internal_ucs4le_loop_unaligned): Likewise.
+       (ucs4le_internal_loop): Likewise.
+       (ucs4le_internal_loop_unaligned): Likewise.
        Reported by yaoz@nih.gov.
 
 2000-05-06  Bruno Haible  <haible@clisp.cons.org>
index caee6f3..4010a6b 100644 (file)
@@ -234,10 +234,10 @@ ucs4_internal_loop (const unsigned char **inptrp, const unsigned char *inend,
   *outptrp = outptr;
 
   /* Determine the status.  */
-  if (*outptrp == outend)
-    result = __GCONV_FULL_OUTPUT;
-  else if (*inptrp == inend)
+  if (*inptrp == inend)
     result = __GCONV_EMPTY_INPUT;
+  else if (*outptrp == outend)
+    result = __GCONV_FULL_OUTPUT;
   else
     result = __GCONV_INCOMPLETE_INPUT;
 
@@ -296,10 +296,10 @@ ucs4_internal_loop_unaligned (const unsigned char **inptrp,
   *outptrp = outptr;
 
   /* Determine the status.  */
-  if (*outptrp == outend)
-    result = __GCONV_FULL_OUTPUT;
-  else if (*inptrp == inend)
+  if (*inptrp == inend)
     result = __GCONV_EMPTY_INPUT;
+  else if (*outptrp == outend)
+    result = __GCONV_FULL_OUTPUT;
   else
     result = __GCONV_INCOMPLETE_INPUT;
 
@@ -392,10 +392,10 @@ internal_ucs4le_loop (const unsigned char **inptrp, const unsigned char *inend,
 #endif
 
   /* Determine the status.  */
-  if (*outptrp == outend)
-    result = __GCONV_FULL_OUTPUT;
-  else if (*inptrp == inend)
+  if (*inptrp == inend)
     result = __GCONV_EMPTY_INPUT;
+  else if (*outptrp == outend)
+    result = __GCONV_FULL_OUTPUT;
   else
     result = __GCONV_INCOMPLETE_INPUT;
 
@@ -438,10 +438,10 @@ internal_ucs4le_loop_unaligned (const unsigned char **inptrp,
 # endif
 
   /* Determine the status.  */
-  if (*outptrp == outend)
-    result = __GCONV_FULL_OUTPUT;
-  else if (*inptrp == inend)
+  if (*inptrp == inend)
     result = __GCONV_EMPTY_INPUT;
+  else if (*outptrp == outend)
+    result = __GCONV_FULL_OUTPUT;
   else
     result = __GCONV_INCOMPLETE_INPUT;
 
@@ -531,10 +531,10 @@ ucs4le_internal_loop (const unsigned char **inptrp, const unsigned char *inend,
   *outptrp = outptr;
 
   /* Determine the status.  */
-  if (*outptrp == outend)
-    result = __GCONV_FULL_OUTPUT;
-  else if (*inptrp == inend)
+  if (*inptrp == inend)
     result = __GCONV_EMPTY_INPUT;
+  else if (*outptrp == outend)
+    result = __GCONV_FULL_OUTPUT;
   else
     result = __GCONV_INCOMPLETE_INPUT;
 
@@ -583,10 +583,10 @@ ucs4le_internal_loop_unaligned (const unsigned char **inptrp,
   *outptrp = outptr;
 
   /* Determine the status.  */
-  if (*outptrp == outend)
-    result = __GCONV_FULL_OUTPUT;
-  else if (*inptrp == inend)
+  if (*inptrp == inend)
     result = __GCONV_EMPTY_INPUT;
+  else if (*outptrp == outend)
+    result = __GCONV_FULL_OUTPUT;
   else
     result = __GCONV_INCOMPLETE_INPUT;
 
index 5c1c1e1..8a0310d 100644 (file)
@@ -1,3 +1,24 @@
+2000-05-06  Kaz Kylheku  <kaz@ashi.footprints.net>
+
+       * internals.h: New thread manager request type, REQ_KICK.
+       * join.c (pthread_exit): main thread now calls exit() instead
+       of _exit() in order to proper process cleanup.
+       * manager.c (__pthread_manager): Do not terminate manager
+       after unblocking main thread; wait for main thread's
+       REQ_PROCESS_EXIT request instead.
+       Also, added REQ_KICK case to handle new request; this just does
+       nothing.
+       * manager.c (pthread_exited): Do not terminate manager after
+       unblocking main thread.
+       * manager.c (__pthread_manager_sighandler): If the main thread
+       is waiting for all other threads to die, send a REQ_KICK into
+       the thread manager request pipe to get it to clean out the threads
+       and unblock the main thread as soon as possible. This fixes
+       the 2000 millisecond hang on shutdown bug.
+       * Examples/ex7.c: New file, tests shutdown behavior when all threads
+       including the main one call pthread_exit(), or implicitly do so.
+       * Makefile (tests): Add ex7.
+
 2000-05-05  Andreas Jaeger  <aj@suse.de>
 
        * sysdeps/unix/sysv/linux/i386/getcpuclockid.c