OSDN Git Service

* thread.cc (pthread::create(3 args)): Make bool.
authorcorinna <corinna>
Fri, 5 Aug 2005 16:14:41 +0000 (16:14 +0000)
committercorinna <corinna>
Fri, 5 Aug 2005 16:14:41 +0000 (16:14 +0000)
(pthread_null::create): Ditto.
(pthread::create(4 args)): Check return of inner create rather than
calling is_good_object().
* thread.h: Ditto.

winsup/cygwin/ChangeLog
winsup/cygwin/thread.cc
winsup/cygwin/thread.h

index d28b9ac..b52ceef 100644 (file)
@@ -1,3 +1,11 @@
+2005-08-05 Michael Gorse <mgorse@alum.wpi.edu>
+
+       * thread.cc (pthread::create(3 args)): Make bool.
+       (pthread_null::create): Ditto.
+       (pthread::create(4 args)): Check return of inner create rather than
+       calling is_good_object().
+       * thread.h: Ditto.
+
 2005-08-05  Vaclav Haisman  <v.haisman@sh.cvut.cz>
 
        * fhandler_tty.cc (fhandler_tty_slave::tcflush): Return either 0 or -1.
index 03bebb1..0956820 100644 (file)
@@ -491,13 +491,15 @@ pthread::precreate (pthread_attr *newattr)
     magic = 0;
 }
 
-void
+bool
 pthread::create (void *(*func) (void *), pthread_attr *newattr,
                 void *threadarg)
 {
+  bool retval;
+
   precreate (newattr);
   if (!magic)
-    return;
+    return false;
 
   function = func;
   arg = threadarg;
@@ -517,7 +519,9 @@ pthread::create (void *(*func) (void *), pthread_attr *newattr,
       while (!cygtls)
        low_priority_sleep (0);
     }
+  retval = magic;
   mutex.unlock ();
+  return retval;
 }
 
 void
@@ -1993,8 +1997,7 @@ pthread::create (pthread_t *thread, const pthread_attr_t *attr,
     return EINVAL;
 
   *thread = new pthread ();
-  (*thread)->create (start_routine, attr ? *attr : NULL, arg);
-  if (!is_good_object (thread))
+  if (!(*thread)->create (start_routine, attr ? *attr : NULL, arg))
     {
       delete (*thread);
       *thread = NULL;
@@ -3274,9 +3277,10 @@ pthread_null::~pthread_null ()
 {
 }
 
-void
+bool
 pthread_null::create (void *(*)(void *), pthread_attr *, void *)
 {
+  return true;
 }
 
 void
index 7fa6198..c15ded4 100644 (file)
@@ -380,7 +380,7 @@ public:
   HANDLE cancel_event;
   pthread_t joiner;
 
-  virtual void create (void *(*)(void *), pthread_attr *, void *);
+  virtual bool create (void *(*)(void *), pthread_attr *, void *);
 
   pthread ();
   virtual ~pthread ();
@@ -473,7 +473,7 @@ class pthread_null : public pthread
   /* From pthread These should never get called
   * as the ojbect is not verifyable
   */
-  void create (void *(*)(void *), pthread_attr *, void *);
+  bool create (void *(*)(void *), pthread_attr *, void *);
   void exit (void *value_ptr) __attribute__ ((noreturn));
   int cancel ();
   void testcancel ();