This is the mail archive of the pthreads-win32@sourceware.cygnus.com mailing list for the pthreas-win32 project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: condvar.c


Hi all,

I'm going to put up a new snapshot late saturday (my time) with all
patches since snapshot 99-04-07 included.

Thanks everyone.
Ross

On Thu, 27 May 1999, Mark E. Armstrong wrote:

> Greetings,
> 
> After reading the referenced messages and checking the code WRT to
> the incorrect equality check, I noticed the assignment made to
> cv->wasBroadcast should be moved to prevent a possible memory
> fault when cv is dereferenced for auto-init objects:
> 
> 
> ************ original condvar.c starting at  line 828 ************
>   cv = *cond;
> 
>   cv->wasBroadcast = TRUE;
> 
>   /*
>    * No-op if the CV is static and hasn't been initialised yet.
>    */
>   if (cv == (pthread_cond_t) _PTHREAD_OBJECT_AUTO_INIT)
>     {
>       return 0;
>     }
> 
> ************* corrected condvar.c starting at  line 828 ************
>   cv = *cond;
> 
>   /*
>    * No-op if the CV is static and hasn't been initialised yet.
>    */
>   if (cv == (pthread_cond_t) _PTHREAD_OBJECT_AUTO_INIT)
>     {
>       return 0;
>     }
> 
>   cv->wasBroadcast = TRUE;
> 
> **********************************************************
> 
> Took a quick look through the rest of the 99-04-07 snapshot for similar
> errors and didn't find any more.
> 
> Enjoy,
> Mark Armstrong
> 
> 
> 
> 
> "Bossom, John" wrote:
> 
> > You are correct... (assuming the code snippet you sent originated from my
> > original source... it looks like it does... I don't have the win32-pthreads
> > snapshot).
> >
> > -----Original Message-----
> > From: Peter Slacik [mailto:Peter.Slacik@tatramed.sk]
> > Sent: Wednesday, May 26, 1999 12:19 PM
> > To: Pthreads-Win32 Mailing List
> > Subject: condvar.c
> >
> > Hi thread writers,
> >
> > I tried to upgrade (after half year) to the current pthreads snapshot,
> > snap-1999-04-07, and I suspect one inequality test to be wrong:
> >
> > cvs diff -c -r1.1 -r1.2 condvar.c
> > Index: condvar.c
> > ===================================================================
> > RCS file: pthread/condvar.c,v
> > retrieving revision 1.1
> > retrieving revision 1.2
> > diff -c -r1.1 -r1.2
> > *** condvar.c   1999/04/07 12:18:40     1.1
> > --- condvar.c   1999/05/26 16:10:08     1.2
> > ***************
> > *** 851,857 ****
> >          * Wait for all the awakened threads to acquire their part of
> >          * the counting semaphore
> >          */
> > !       if (WaitForSingleObject (cv->waitersDone, INFINITE) !=
> >             WAIT_OBJECT_0)
> >           {
> >             result = 0;
> > --- 851,857 ----
> >          * Wait for all the awakened threads to acquire their part of
> >          * the counting semaphore
> >          */
> > !       if (WaitForSingleObject (cv->waitersDone, INFINITE) ==
> >             WAIT_OBJECT_0)
> >           {
> >             result = 0;
> >
> > Please check this.
> >
> > Regards
> > Peter Slacik
> 
> 

+----------------------+---+
| Ross Johnson         |   | E-Mail: rpj@ise.canberra.edu.au
| Info Sciences and Eng|___|
| University of Canberra   | FAX:    +61 6 2015227
| PO Box 1                 |
| Belconnen  ACT    2616   | WWW:    http://willow.canberra.edu.au/~rpj/
| AUSTRALIA                |
+--------------------------+



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]