From 01d351433ab9eb164ad9e9127e18e4e4347cbea0 Mon Sep 17 00:00:00 2001 From: Pekka Riikonen Date: Tue, 7 Aug 2007 18:15:19 +0000 Subject: [PATCH] Fixed alignment issues on 64-bit CPUs. --- lib/silcutil/silcschedule.c | 6 +++--- lib/silcutil/unix/silcunixschedule.c | 11 ++++++++--- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/lib/silcutil/silcschedule.c b/lib/silcutil/silcschedule.c index 53cb0aa7..6c2f78ca 100644 --- a/lib/silcutil/silcschedule.c +++ b/lib/silcutil/silcschedule.c @@ -201,12 +201,12 @@ static void silc_schedule_task_remove(SilcSchedule schedule, SilcTask task) if (silc_unlikely(task == SILC_ALL_TASKS)) { SilcTask task; SilcHashTableList htl; - SilcUInt32 fd; + void *fd; /* Delete from fd queue */ silc_hash_table_list(schedule->fd_queue, &htl); - while (silc_hash_table_get(&htl, (void *)&fd, (void *)&task)) - silc_hash_table_del(schedule->fd_queue, SILC_32_TO_PTR(fd)); + while (silc_hash_table_get(&htl, &fd, (void *)&task)) + silc_hash_table_del(schedule->fd_queue, fd); silc_hash_table_list_reset(&htl); /* Delete from timeout queue */ diff --git a/lib/silcutil/unix/silcunixschedule.c b/lib/silcutil/unix/silcunixschedule.c index 137d52de..9aa2cdeb 100644 --- a/lib/silcutil/unix/silcunixschedule.c +++ b/lib/silcutil/unix/silcunixschedule.c @@ -121,11 +121,13 @@ int silc_poll(SilcSchedule schedule, void *context) struct pollfd *fds = internal->fds; SilcUInt32 fds_count = internal->fds_count; int fd, ret, i = 0, timeout = -1; + void *fdp; silc_hash_table_list(schedule->fd_queue, &htl); - while (silc_hash_table_get(&htl, (void *)&fd, (void *)&task)) { + while (silc_hash_table_get(&htl, &fdp, (void *)&task)) { if (!task->events) continue; + fd = SILC_PTR_TO_32(fdp); /* Allocate larger fd table if needed */ if (i >= fds_count) { @@ -198,14 +200,16 @@ int silc_select(SilcSchedule schedule, void *context) SilcTaskFd task; fd_set in, out; int fd, max_fd = 0, ret; + void *fdp; FD_ZERO(&in); FD_ZERO(&out); silc_hash_table_list(schedule->fd_queue, &htl); - while (silc_hash_table_get(&htl, (void *)&fd, (void *)&task)) { + while (silc_hash_table_get(&htl, &fdp, (void *)&task)) { if (!task->events) continue; + fd = SILC_PTR_TO_32(fdp); #ifdef FD_SETSIZE if (fd >= FD_SETSIZE) @@ -233,9 +237,10 @@ int silc_select(SilcSchedule schedule, void *context) return ret; silc_hash_table_list(schedule->fd_queue, &htl); - while (silc_hash_table_get(&htl, (void *)&fd, (void *)&task)) { + while (silc_hash_table_get(&htl, &fdp, (void *)&task)) { if (!task->header.valid || !task->events) continue; + fd = SILC_PTR_TO_32(fdp); #ifdef FD_SETSIZE if (fd >= FD_SETSIZE) -- 2.24.0