aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cooper <andrew.cooper3@citrix.com>2014-11-26 15:09:40 +0000
committerIan Campbell <ian.campbell@citrix.com>2014-11-28 11:09:24 +0000
commite01898f17ca667c2630c8b7dfe43490f48331e53 (patch)
tree170b6698f491a910d65bda96b8a465bcd4408560
parentd27ccd4fcbc2ed803fd10f03dabad4ae8f5c8ae9 (diff)
tools/oxenstored: Fix | vs & error in fd event handling
This makes fields 0 and 1 true more often than they should be, resulting problems when handling events. Signed-off-by: Andrew Cooper <andrew.cooper3@citrix.com> CC: Ian Campbell <Ian.Campbell@citrix.com> CC: Ian Jackson <Ian.Jackson@eu.citrix.com> CC: Wei Liu <wei.liu2@citrix.com> CC: Dave Scott <Dave.Scott@eu.citrix.com> CC: Zheng Li <zheng.li3@citrix.com> CC: Konrad Rzeszutek Wilk <konrad.wilk@oracle.com> Reviewed-by: Zheng Li <dev@zheng.li> Reviewed-by: David Scott <dave.scott@citrix.com>
-rw-r--r--tools/ocaml/xenstored/select_stubs.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/tools/ocaml/xenstored/select_stubs.c b/tools/ocaml/xenstored/select_stubs.c
index 4a8edb5548..af72b84fa2 100644
--- a/tools/ocaml/xenstored/select_stubs.c
+++ b/tools/ocaml/xenstored/select_stubs.c
@@ -56,8 +56,8 @@ CAMLprim value stub_select_on_poll(value fd_events, value timeo) {
events = Field(Field(fd_events, i), 1);
if (c_fds[i].revents & POLLNVAL) unix_error(EBADF, "select", Nothing);
- Field(events, 0) = Val_bool(c_fds[i].events | POLLIN && c_fds[i].revents & (POLLIN |POLLHUP|POLLERR));
- Field(events, 1) = Val_bool(c_fds[i].events | POLLOUT && c_fds[i].revents & (POLLOUT|POLLHUP|POLLERR));
+ Field(events, 0) = Val_bool(c_fds[i].events & POLLIN && c_fds[i].revents & (POLLIN |POLLHUP|POLLERR));
+ Field(events, 1) = Val_bool(c_fds[i].events & POLLOUT && c_fds[i].revents & (POLLOUT|POLLHUP|POLLERR));
Field(events, 2) = Val_bool(c_fds[i].revents & POLLPRI);
}