summaryrefslogtreecommitdiff
path: root/gthread
diff options
context:
space:
mode:
authorSebastian Wilhelmi <wilhelmi@ira.uka.de>2000-09-01 13:33:04 +0000
committerSebastian Wilhelmi <wilhelmi@src.gnome.org>2000-09-01 13:33:04 +0000
commit4d1cb41ef99377ca1d9708a72dfc2f1df38cf685 (patch)
treecbd6d6868bcc5a9483296cd5fba9e202191c107e /gthread
parent64bbfbb6dae9a6f9f5b839b85beb42c3d7f2a790 (diff)
downloadglib-4d1cb41ef99377ca1d9708a72dfc2f1df38cf685.tar.gz
Use GError to report errors as well.
2000-09-01 Sebastian Wilhelmi <wilhelmi@ira.uka.de> * gthread-solaris.c (g_thread_create_solaris_impl): Use GError to report errors as well.
Diffstat (limited to 'gthread')
-rw-r--r--gthread/ChangeLog3
-rw-r--r--gthread/gthread-posix.c4
-rw-r--r--gthread/gthread-solaris.c18
3 files changed, 20 insertions, 5 deletions
diff --git a/gthread/ChangeLog b/gthread/ChangeLog
index 0adc49f76..4a35bfa12 100644
--- a/gthread/ChangeLog
+++ b/gthread/ChangeLog
@@ -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
diff --git a/gthread/gthread-posix.c b/gthread/gthread-posix.c
index 4be752d68..5516a2964 100644
--- a/gthread/gthread-posix.c
+++ b/gthread/gthread-posix.c
@@ -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));
diff --git a/gthread/gthread-solaris.c b/gthread/gthread-solaris.c
index c8d4302b9..7cf3c6ff0 100644
--- a/gthread/gthread-solaris.c
+++ b/gthread/gthread-solaris.c
@@ -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);
}