Use GError to report errors as well.
authorSebastian Wilhelmi <wilhelmi@ira.uka.de>
Fri, 1 Sep 2000 13:33:04 +0000 (13:33 +0000)
committerSebastian Wilhelmi <wilhelmi@src.gnome.org>
Fri, 1 Sep 2000 13:33:04 +0000 (13:33 +0000)
2000-09-01  Sebastian Wilhelmi  <wilhelmi@ira.uka.de>

* gthread-solaris.c (g_thread_create_solaris_impl): Use GError to
report errors as well.

gthread/ChangeLog
gthread/gthread-posix.c
gthread/gthread-solaris.c

index 0adc49f762ad681a3055bd43561fe5b331594920..4a35bfa12e2c9c569d396018b4172928d6b043ab 100644 (file)
@@ -3,6 +3,9 @@
        * gthread-posix.c (g_thread_create_posix_impl): Use GError to
        report errors.
 
+       * gthread-solaris.c (g_thread_create_solaris_impl): Use GError to
+       report errors as well.
+       
 2000-05-13  Tor Lillqvist  <tml@iki.fi>
 
        * makefile.mingw.in: New file, with gthread stuff moved from
index 4be752d68c55c8acd59b1953e9082d57547f5e28..5516a296464dc28a50d9142e090203317236e492 100644 (file)
@@ -287,13 +287,15 @@ g_thread_create_posix_impl (GThreadFunc thread_func,
 
   posix_check_for_error (pthread_attr_destroy (&attr));
 
-  if (ret)
+  if (ret == EAGAIN)
     {
       g_set_error (error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN, 
                   "Error creating thread: %s", g_strerror (ret));
       return;
     }
 
+  posix_check_for_error (ret);
+
 #ifdef G_THREADS_IMPL_DCE
   if (!joinable)
     posix_check_for_error (pthread_detach (thread));
index c8d4302b9320ebb903133f9f2e656658e361e612..7cf3c6ff0a31f0312635ed9ce9d1d501c504dc34 100644 (file)
@@ -195,18 +195,28 @@ g_thread_create_solaris_impl (GThreadFunc thread_func,
                              gboolean joinable,
                              gboolean bound,
                              GThreadPriority priority,
-                             gpointer thread)
+                             gpointer thread,
+                             GError **error)
 {     
   long flags = (bound ? THR_BOUND : 0) | (joinable ? 0: THR_DETACHED);
+  gint ret;
   
   g_return_if_fail (thread_func);
   
   stack_size = MAX (g_thread_min_stack_size, stack_size);
   
-  solaris_check_for_error (thr_create (NULL, stack_size,  
-                                      (void* (*)(void*))thread_func,
-                                      arg, flags, thread));
+  ret = thr_create (NULL, stack_size, (void* (*)(void*))thread_func,
+                   arg, flags, thread);
+
+  if (ret == EAGAIN)
+    {
+      g_set_error (error, G_THREAD_ERROR, G_THREAD_ERROR_AGAIN, 
+                  "Error creating thread: %s", g_strerror (ret));
+      return;
+    }
   
+  solaris_check_for_error (ret);
+
   g_thread_set_priority_solaris_impl (thread, priority);
 }