diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-05-07 22:04:36 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-05-07 22:04:36 +0000 |
commit | fc08075dc61787269743a1abb8ff8221868c3210 (patch) | |
tree | 3f30336e48d8cfde89932c00f2b3884bf70d478f | |
parent | 1336419e465c180c938652fadc2aa0b487a6e887 (diff) | |
download | glibc-fc08075dc61787269743a1abb8ff8221868c3210.tar glibc-fc08075dc61787269743a1abb8ff8221868c3210.tar.gz glibc-fc08075dc61787269743a1abb8ff8221868c3210.tar.bz2 glibc-fc08075dc61787269743a1abb8ff8221868c3210.zip |
Update.
(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.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | iconv/gconv_simple.c | 36 | ||||
-rw-r--r-- | linuxthreads/ChangeLog | 21 |
3 files changed, 45 insertions, 18 deletions
@@ -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> diff --git a/iconv/gconv_simple.c b/iconv/gconv_simple.c index caee6f36f9..4010a6b326 100644 --- a/iconv/gconv_simple.c +++ b/iconv/gconv_simple.c @@ -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; diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index 5c1c1e1298..8a0310dadb 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -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 |