about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--linuxthreads/ChangeLog10
-rw-r--r--linuxthreads/forward.c4
-rw-r--r--linuxthreads/pthread.c4
-rw-r--r--linuxthreads/sysdeps/pthread/bits/libc-lock.h14
-rw-r--r--linuxthreads/sysdeps/pthread/pthread-functions.h5
-rw-r--r--localedata/ChangeLog14
-rw-r--r--localedata/locales/ca_ES6
-rw-r--r--localedata/locales/eu_ES4
-rw-r--r--localedata/locales/gl_ES4
9 files changed, 47 insertions, 18 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 62c05e256d..adbb233535 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,13 @@
+2003-09-22  Philip Blundell  <philb@gnu.org>
+
+	* forward.c: Add _pthread_cleanup_push, _pthread_cleanup_pop.
+	* sysdeps/pthread/pthread-functions.h (struct pthread_functions):
+	Likewise.
+	* pthread.c (__pthread_elements): Initialise these new elements.
+	* sysdeps/pthread/bits/libc-lock.h (__libc_cleanup_push): Use
+	__libc_maybe_call.
+	(__libc_cleanup_pop): Likewise.
+
 2003-09-22  Jakub Jelinek  <jakub@redhat.com>
 
 	* attr.c: Include stdlib.h.
diff --git a/linuxthreads/forward.c b/linuxthreads/forward.c
index 46cf53893e..b2a36d7d60 100644
--- a/linuxthreads/forward.c
+++ b/linuxthreads/forward.c
@@ -173,3 +173,7 @@ FORWARD (pthread_setcancelstate, (int state, int *oldstate), (state, oldstate),
 	 0)
 
 FORWARD (pthread_setcanceltype, (int type, int *oldtype), (type, oldtype), 0)
+
+FORWARD2 (_pthread_cleanup_push, void, (struct _pthread_cleanup_buffer * buffer, void (*routine)(void *), void * arg), (buffer, routine, arg), return)
+
+FORWARD2 (_pthread_cleanup_pop, void, (struct _pthread_cleanup_buffer * buffer, int execute), (buffer, execute), return)
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c
index a6a2edac81..b3953542e0 100644
--- a/linuxthreads/pthread.c
+++ b/linuxthreads/pthread.c
@@ -279,7 +279,9 @@ struct pthread_functions __pthread_functions =
     .ptr_pthread_cleanup_upto = __pthread_cleanup_upto,
     .ptr_pthread_sigaction = __pthread_sigaction,
     .ptr_pthread_sigwait = __pthread_sigwait,
-    .ptr_pthread_raise = __pthread_raise
+    .ptr_pthread_raise = __pthread_raise,
+    .ptr__pthread_cleanup_push = _pthread_cleanup_push,
+    .ptr__pthread_cleanup_pop = _pthread_cleanup_pop
   };
 #ifdef SHARED
 # define ptr_pthread_functions &__pthread_functions
diff --git a/linuxthreads/sysdeps/pthread/bits/libc-lock.h b/linuxthreads/sysdeps/pthread/bits/libc-lock.h
index c0d0debe14..7e22166862 100644
--- a/linuxthreads/sysdeps/pthread/bits/libc-lock.h
+++ b/linuxthreads/sysdeps/pthread/bits/libc-lock.h
@@ -265,18 +265,12 @@ typedef pthread_key_t __libc_key_t;
     }
 
 #define __libc_cleanup_push(fct, arg) \
-  { struct _pthread_cleanup_buffer _buffer;				      \
-    int _avail = _pthread_cleanup_push != NULL;				      \
-    if (_avail) {							      \
-      _pthread_cleanup_push (&_buffer, (fct), (arg));			      \
-    }
+    { struct _pthread_cleanup_buffer _buffer; 				      \
+    __libc_maybe_call (_pthread_cleanup_push, (&_buffer, (fct), (arg)), 0)
 
 #define __libc_cleanup_pop(execute) \
-    if (_avail) {							      \
-      _pthread_cleanup_pop (&_buffer, execute);				      \
-    }									      \
-  }
-
+    __libc_maybe_call (_pthread_cleanup_pop, (&_buffer, execute), 0);	      \
+    }
 
 /* Create thread-specific key.  */
 #define __libc_key_create(KEY, DESTRUCTOR) \
diff --git a/linuxthreads/sysdeps/pthread/pthread-functions.h b/linuxthreads/sysdeps/pthread/pthread-functions.h
index deade5c981..43a328ae9c 100644
--- a/linuxthreads/sysdeps/pthread/pthread-functions.h
+++ b/linuxthreads/sysdeps/pthread/pthread-functions.h
@@ -83,6 +83,11 @@ struct pthread_functions
   int (*ptr_pthread_raise) (int sig);
   int (*ptr___pthread_cond_timedwait) (pthread_cond_t *, pthread_mutex_t *,
 				       const struct timespec *);
+  void (*ptr__pthread_cleanup_push) (struct _pthread_cleanup_buffer * buffer,
+				     void (*routine)(void *), void * arg);
+
+  void (*ptr__pthread_cleanup_pop) (struct _pthread_cleanup_buffer * buffer,
+				    int execute);
 };
 
 /* Variable in libc.so.  */
diff --git a/localedata/ChangeLog b/localedata/ChangeLog
index dbe894167a..0458879d70 100644
--- a/localedata/ChangeLog
+++ b/localedata/ChangeLog
@@ -1,3 +1,17 @@
+2003-09-21  Jordi Mallach  <jordi@gnu.org>
+
+	* locales/ca_ES: Fix mon_grouping, int_frac_digits and frac_digits
+	values.
+	* locales/eu_ES: Fix int_frac_digits and frac_digits values.
+	* locales/gl_ES: Likewise.
+
+2003-09-21  Jordi Mallach  <jordi@gnu.org>
+
+	* locales/ca_ES: Fix mon_grouping, int_frac_digits and frac_digits
+	values.
+	* locales/eu_ES: Fix int_frac_digits and frac_digits values.
+	* locales/gl_ES: Likewise.
+
 2003-09-17  Ulrich Drepper  <drepper@redhat.com>
 
 	* locales/lo_LA: Fix duplicated collation entries.
diff --git a/localedata/locales/ca_ES b/localedata/locales/ca_ES
index 4161efffd6..fce51fd41c 100644
--- a/localedata/locales/ca_ES
+++ b/localedata/locales/ca_ES
@@ -2124,11 +2124,11 @@ int_curr_symbol      "<U0045><U0055><U0052><U0020>"
 currency_symbol      "<U20AC>"
 mon_decimal_point    "<U002C>"
 mon_thousands_sep    "<U002E>"
-mon_grouping         2;3
+mon_grouping         3;3
 positive_sign        ""
 negative_sign        "<U002D>"
-int_frac_digits      0
-frac_digits          0
+int_frac_digits      2
+frac_digits          2
 p_cs_precedes        1
 p_sep_by_space       1
 n_cs_precedes        1
diff --git a/localedata/locales/eu_ES b/localedata/locales/eu_ES
index bb981b0046..412ebcaa95 100644
--- a/localedata/locales/eu_ES
+++ b/localedata/locales/eu_ES
@@ -71,8 +71,8 @@ mon_thousands_sep    "<U002E>"
 mon_grouping         3;3
 positive_sign        ""
 negative_sign        "<U002D>"
-int_frac_digits      0
-frac_digits          0
+int_frac_digits      2
+frac_digits          2
 p_cs_precedes        1
 p_sep_by_space       1
 n_cs_precedes        1
diff --git a/localedata/locales/gl_ES b/localedata/locales/gl_ES
index 28c5e9ac69..01cf406c57 100644
--- a/localedata/locales/gl_ES
+++ b/localedata/locales/gl_ES
@@ -67,8 +67,8 @@ mon_thousands_sep    "<U002E>"
 mon_grouping         3;3
 positive_sign        ""
 negative_sign        "<U002D>"
-int_frac_digits      0
-frac_digits          0
+int_frac_digits      2
+frac_digits          2
 p_cs_precedes        1
 p_sep_by_space       1
 n_cs_precedes        1