projects
/
runtime.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
3d83cfc
)
Check for NULL internal context in all functions, as it may
author
Pekka Riikonen
<priikone@silcnet.org>
Thu, 21 Mar 2002 18:18:37 +0000
(18:18 +0000)
committer
Pekka Riikonen
<priikone@silcnet.org>
Thu, 21 Mar 2002 18:18:37 +0000
(18:18 +0000)
be NULL.
lib/silcutil/unix/silcunixschedule.c
patch
|
blob
|
history
diff --git
a/lib/silcutil/unix/silcunixschedule.c
b/lib/silcutil/unix/silcunixschedule.c
index de64bd58b64e693203637ff0e3f9931ee310c9d5..2bdff338251bc68f921f797b9f1973e0b5938a62 100644
(file)
--- a/
lib/silcutil/unix/silcunixschedule.c
+++ b/
lib/silcutil/unix/silcunixschedule.c
@@
-112,6
+112,7
@@
void *silc_schedule_internal_init(SilcSchedule schedule)
#ifdef SILC_THREADS
if (pipe(internal->wakeup_pipe)) {
#ifdef SILC_THREADS
if (pipe(internal->wakeup_pipe)) {
+ SILC_LOG_ERROR(("pipe() fails: %s", strerror(errno)));
silc_free(internal);
return NULL;
}
silc_free(internal);
return NULL;
}
@@
-122,6
+123,7
@@
void *silc_schedule_internal_init(SilcSchedule schedule)
0, 0, SILC_TASK_FD,
SILC_TASK_PRI_NORMAL);
if (!internal->wakeup_task) {
0, 0, SILC_TASK_FD,
SILC_TASK_PRI_NORMAL);
if (!internal->wakeup_task) {
+ SILC_LOG_ERROR(("Could not add a wakeup task, threads won't work"));
close(internal->wakeup_pipe[0]);
close(internal->wakeup_pipe[1]);
silc_free(internal);
close(internal->wakeup_pipe[0]);
close(internal->wakeup_pipe[1]);
silc_free(internal);
@@
-171,6
+173,9
@@
void silc_schedule_internal_signal_register(void *context,
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
+ if (!internal)
+ return;
+
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
for (i = 0; i < SIGNAL_COUNT; i++) {
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
for (i = 0; i < SIGNAL_COUNT; i++) {
@@
-195,6
+200,9
@@
void silc_schedule_internal_signal_unregister(void *context,
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
+ if (!internal)
+ return;
+
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
for (i = 0; i < SIGNAL_COUNT; i++) {
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
for (i = 0; i < SIGNAL_COUNT; i++) {
@@
-219,6
+227,9
@@
void silc_schedule_internal_signal_call(void *context, SilcUInt32 signal)
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
+ if (!internal)
+ return;
+
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
for (i = 0; i < SIGNAL_COUNT; i++) {
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
for (i = 0; i < SIGNAL_COUNT; i++) {
@@
-237,6
+248,9
@@
void silc_schedule_internal_signals_call(void *context,
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
SilcUnixScheduler internal = (SilcUnixScheduler)context;
int i;
+ if (!internal)
+ return;
+
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
for (i = 0; i < SIGNAL_COUNT; i++) {
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
for (i = 0; i < SIGNAL_COUNT; i++) {
@@
-257,6
+271,10
@@
void silc_schedule_internal_signals_call(void *context,
void silc_schedule_internal_signals_block(void *context)
{
SilcUnixScheduler internal = (SilcUnixScheduler)context;
void silc_schedule_internal_signals_block(void *context)
{
SilcUnixScheduler internal = (SilcUnixScheduler)context;
+
+ if (!internal)
+ return;
+
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
}
sigprocmask(SIG_BLOCK, &internal->signals, &internal->signals_blocked);
}
@@
-265,5
+283,9
@@
void silc_schedule_internal_signals_block(void *context)
void silc_schedule_internal_signals_unblock(void *context)
{
SilcUnixScheduler internal = (SilcUnixScheduler)context;
void silc_schedule_internal_signals_unblock(void *context)
{
SilcUnixScheduler internal = (SilcUnixScheduler)context;
+
+ if (!internal)
+ return;
+
sigprocmask(SIG_SETMASK, &internal->signals_blocked, NULL);
}
sigprocmask(SIG_SETMASK, &internal->signals_blocked, NULL);
}