aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-05-07 22:04:36 +0000
committerUlrich Drepper <drepper@redhat.com>2000-05-07 22:04:36 +0000
commitfc08075dc61787269743a1abb8ff8221868c3210 (patch)
tree3f30336e48d8cfde89932c00f2b3884bf70d478f
parent1336419e465c180c938652fadc2aa0b487a6e887 (diff)
downloadglibc-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--ChangeLog6
-rw-r--r--iconv/gconv_simple.c36
-rw-r--r--linuxthreads/ChangeLog21
3 files changed, 45 insertions, 18 deletions
diff --git a/ChangeLog b/ChangeLog
index 4557c9f2ba..9a63b24172 100644
--- 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>
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