This is the mail archive of the newlib@sourceware.org mailing list for the newlib project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On Dec 12 15:10, Freddie Chopin wrote: > >From 226aeb4f502fc9404567062f68d527ef012ea683 Sat, 12 Dec 2015 15:07:48 +0100 > From: Freddie Chopin <freddie.chopin@gmail.com> > Date: Sat, 12 Dec 2015 11:52:21 +0100 > Subject: [PATCH] Add missing lock releases in __register_exitproc(). > > > In some code paths the __atexit_lock held by this function was not > released when returning with an error. > > * libc/stdlib/__atexit.c (__register_exitproc): Always release > lock before return. > > diff --git a/newlib/libc/stdlib/__atexit.c b/newlib/libc/stdlib/__atexit.c > index 18edc8c..a3d5bdf 100644 > --- a/newlib/libc/stdlib/__atexit.c > +++ b/newlib/libc/stdlib/__atexit.c > @@ -83,12 +83,20 @@ > if (p->_ind >= _ATEXIT_SIZE) > { > #ifndef _ATEXIT_DYNAMIC_ALLOC > +#ifndef __SINGLE_THREAD__ > + __lock_release_recursive(__atexit_lock); > +#endif > return -1; > #else > /* Don't dynamically allocate the atexit array if malloc is not > available. */ > if (!malloc) > - return -1; > + { > +#ifndef __SINGLE_THREAD__ > + __lock_release_recursive(__atexit_lock); > +#endif > + return -1; > + } > > p = (struct _atexit *) malloc (sizeof *p); > if (p == NULL) Applied. Thanks, Corinna -- Corinna Vinschen Cygwin Maintainer Red Hat
Attachment:
pgpk8mGDe4Ps6.pgp
Description: PGP signature
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |