aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog3
-rw-r--r--nptl/ChangeLog6
-rw-r--r--nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S4
-rw-r--r--stdlib/test-canon.c13
4 files changed, 25 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index a574af7..2a3109b 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,8 @@
2004-02-16 Ulrich Drepper <drepper@redhat.com>
+ * stdlib/test-canon.c (do_test): Test realpath(,NULL) in the loop
+ as well.
+
* stdlib/canonicalize.c (__realpath): Remove unnecessary copy
operations.
diff --git a/nptl/ChangeLog b/nptl/ChangeLog
index 677e334..2e18bfb 100644
--- a/nptl/ChangeLog
+++ b/nptl/ChangeLog
@@ -1,3 +1,9 @@
+2004-02-16 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+ (__condvar_tw_cleanup): Little optimization.
+ Patch by Dinakar Guniguntala <dgunigun@in.ibm.com>.
+
2004-02-16 Steven Munroe <sjmunroe@us.ibm.com>
* sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: Replace libc with
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
index 1783095..6d1a325 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
@@ -401,7 +401,11 @@ __condvar_tw_cleanup:
adcl $0, woken_seq+4(%ebx)
LOCK
+#if cond_lock == 0
+ subl $1, (%ebx)
+#else
subl $1, cond_lock(%ebx)
+#endif
je 2f
#if cond_lock == 0
diff --git a/stdlib/test-canon.c b/stdlib/test-canon.c
index 6b7375a..f070df7 100644
--- a/stdlib/test-canon.c
+++ b/stdlib/test-canon.c
@@ -1,5 +1,5 @@
/* Test program for returning the canonical absolute name of a given file.
- Copyright (C) 1996, 1997, 2000, 2002 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 2000, 2002, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by David Mosberger <davidm@azstarnet.com>.
@@ -186,6 +186,17 @@ do_test (int argc, char ** argv)
++errors;
continue;
}
+
+ char *result2 = realpath (tests[i].in, NULL);
+ if ((result2 == NULL && result != NULL)
+ || (result2 != NULL && strcmp (result, result2) != 0))
+ {
+ printf ("\
+%s: realpath(..., NULL) produced different result than realpath(..., buf): '%s' vs '%s'\n",
+ argv[0], result2, result);
+ ++errors;
+ }
+ free (result2);
}
getcwd (buf, sizeof(buf));