From: Pekka Riikonen Date: Tue, 7 Aug 2007 18:07:54 +0000 (+0000) Subject: Fixed alignment issues on 64-bit CPUs. X-Git-Tag: 1.2.beta1~145 X-Git-Url: http://git.silcnet.org/gitweb/?p=crypto.git;a=commitdiff_plain;h=c5bf0b00baa6001d73d4b6ed854f92715330ea0b Fixed alignment issues on 64-bit CPUs. --- diff --git a/lib/silcutil/silcschedule.c b/lib/silcutil/silcschedule.c index 1737e3be..ccd9abdb 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 524e4b86..0f2f201b 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)