The branch, v3-6-test has been updated via e6b4b1b tevent/poll: use fde->additional_flags to hold the array index via f23ff66 tevent: change tevent_fd->additional_flags to uint64_t from a13560b s3: sid->domain_sid in winbindd_samr sam_rids_to_names
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-6-test - Log ----------------------------------------------------------------- commit e6b4b1baca1169c3ac53d6afdbd6a3aac365eb4b Author: Stefan Metzmacher <me...@samba.org> Date: Wed Mar 2 15:22:09 2011 +0100 tevent/poll: use fde->additional_flags to hold the array index metze (cherry picked from commit b7d5ddfa61d3b4c797dcee64cb23eb97cc55759c) commit f23ff66388edee724cb3c562aa6164c1be6d1230 Author: Stefan Metzmacher <me...@samba.org> Date: Wed Mar 2 15:20:46 2011 +0100 tevent: change tevent_fd->additional_flags to uint64_t metze (cherry picked from commit 20284f2a8429b5250ffb70e7124fa81115385c58) ----------------------------------------------------------------------- Summary of changes: lib/tevent/tevent_internal.h | 2 +- lib/tevent/tevent_poll.c | 23 ++++++----------------- 2 files changed, 7 insertions(+), 18 deletions(-) Changeset truncated at 500 lines: diff --git a/lib/tevent/tevent_internal.h b/lib/tevent/tevent_internal.h index 3d71bfd..9227f90 100644 --- a/lib/tevent/tevent_internal.h +++ b/lib/tevent/tevent_internal.h @@ -162,7 +162,7 @@ struct tevent_fd { const char *handler_name; const char *location; /* this is private for the events_ops implementation */ - uint16_t additional_flags; + uint64_t additional_flags; void *additional_data; }; diff --git a/lib/tevent/tevent_poll.c b/lib/tevent/tevent_poll.c index cda028a..712255b 100644 --- a/lib/tevent/tevent_poll.c +++ b/lib/tevent/tevent_poll.c @@ -35,7 +35,7 @@ struct poll_event_context { */ struct pollfd *fds; struct tevent_fd **fd_events; - int num_fds; + uint64_t num_fds; /* information for exiting from the event loop */ int exit_code; @@ -64,7 +64,7 @@ static int poll_event_fd_destructor(struct tevent_fd *fde) struct tevent_context *ev = fde->event_ctx; struct poll_event_context *poll_ev = NULL; struct tevent_fd *moved_fde; - long del_idx; + uint64_t del_idx = fde->additional_flags; if (ev == NULL) { goto done; @@ -73,15 +73,10 @@ static int poll_event_fd_destructor(struct tevent_fd *fde) poll_ev = talloc_get_type_abort( ev->additional_data, struct poll_event_context); - /* - * Assume a void * can carry enough bits to hold num_fds. - */ - del_idx = (long)(fde->additional_data); - moved_fde = poll_ev->fd_events[poll_ev->num_fds-1]; poll_ev->fd_events[del_idx] = moved_fde; poll_ev->fds[del_idx] = poll_ev->fds[poll_ev->num_fds-1]; - moved_fde->additional_data = (void *)del_idx; + moved_fde->additional_flags = del_idx; poll_ev->num_fds -= 1; done: @@ -149,10 +144,7 @@ static struct tevent_fd *poll_event_add_fd(struct tevent_context *ev, pfd->events |= (POLLOUT); } - /* - * Assume a void * can carry enough bits to hold num_fds. - */ - fde->additional_data = (void *)(long)poll_ev->num_fds; + fde->additional_flags = poll_ev->num_fds; poll_ev->fd_events[poll_ev->num_fds] = fde; poll_ev->num_fds += 1; @@ -169,7 +161,7 @@ static void poll_event_set_fd_flags(struct tevent_fd *fde, uint16_t flags) { struct poll_event_context *poll_ev = talloc_get_type_abort( fde->event_ctx->additional_data, struct poll_event_context); - long idx; + uint64_t idx = fde->additional_flags; uint16_t pollflags = 0; if (flags & TEVENT_FD_READ) { @@ -179,7 +171,6 @@ static void poll_event_set_fd_flags(struct tevent_fd *fde, uint16_t flags) pollflags |= (POLLOUT); } - idx = (long)(fde->additional_data); poll_ev->fds[idx].events = pollflags; fde->flags = flags; @@ -237,11 +228,9 @@ static int poll_event_loop_poll(struct tevent_context *ev, the handler to remove itself when called */ for (fde = ev->fd_events; fde; fde = fde->next) { struct pollfd *pfd; - long pfd_idx; + uint64_t pfd_idx = fde->additional_flags; uint16_t flags = 0; - pfd_idx = (long)(fde->additional_data); - pfd = &poll_ev->fds[pfd_idx]; if (pfd->revents & (POLLIN|POLLHUP|POLLERR)) { -- Samba Shared Repository