about summary refs log tree commit diff
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 a574af7ffa..2a3109b299 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 677e334a7e..2e18bfb6f9 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 1783095ff8..6d1a325b9b 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 6b7375afd9..f070df74a0 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));