2003-01-27 Ulrich Drepper <drepper@redhat.com>
+ * stdio-common/vfprintf.c [USE_IN_LIBIO]: Use _IO_cleanup_region_start
+ instead of __libc_cleanup_region_start and _IO_cleanup_region_end
+ instead of __libc_cleanup_region_end.
+
+ * sysdeps/unix/sysv/linux/i386/system.c (CLEANUP_HANDLER): Pass 1
+ as first parameter to __libc_cleanup_region_start.
+
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fe_nomask.c
(__fe_nomask_env): Use __prctl not prctl.
* sysdeps/unix/sysv/linux/syscalls.list: Add __prctl alias for
/* Start critical region with cleanup. */
#define __libc_cleanup_region_start(DOIT, FCT, ARG) \
{ struct _pthread_cleanup_buffer _buffer; \
- int _avail = PTF(_pthread_cleanup_push_defer) != NULL; \
- if (_avail) { \
- PTF(_pthread_cleanup_push_defer) (&_buffer, FCT, ARG); \
- } else if (DOIT) { \
- _buffer.__routine = (FCT); \
- _buffer.__arg = (ARG); \
+ int _avail; \
+ if (DOIT) { \
+ _avail = PTF(_pthread_cleanup_push_defer) != NULL; \
+ if (_avail) { \
+ PTF(_pthread_cleanup_push_defer) (&_buffer, FCT, ARG); \
+ } else { \
+ _buffer.__routine = (FCT); \
+ _buffer.__arg = (ARG); \
+ } \
+ } else { \
+ _avail = 0; \
}
/* End critical region with cleanup. */
-/* Copyright (C) 1991-1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991-2002, 2003 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
/* Lock stream. */
#ifdef USE_IN_LIBIO
- __libc_cleanup_region_start (1, (void (*) (void *)) &_IO_funlockfile, s);
+ _IO_cleanup_region_start ((void (*) (void *)) &_IO_funlockfile, s);
_IO_flockfile (s);
#else
__libc_cleanup_region_start (1, (void (*) (void *)) &__funlockfile, s);
/* Unlock the stream. */
#ifdef USE_IN_LIBIO
_IO_funlockfile (s);
+ _IO_cleanup_region_end (0);
#else
__funlockfile (s);
-#endif
__libc_cleanup_region_end (0);
+#endif
return done;
}
static void cancel_handler (void *arg);
#define CLEANUP_HANDLER \
- __libc_cleanup_region_start (0, cancel_handler, &pid)
+ __libc_cleanup_region_start (1, cancel_handler, &pid)
#define CLEANUP_RESET \
__libc_cleanup_region_end (0)