diff options
| author | root <root> | 2010-03-31 11:57:35 +0000 | 
|---|---|---|
| committer | root <root> | 2010-03-31 11:57:35 +0000 | 
| commit | f069cbf063a98621f638cb40d897b04679a14fa3 (patch) | |
| tree | ad2ec382a1aa7b796f1e7b9240c8c0b9f147d4f8 | |
| parent | 619a043b8db5e6856a1b5bfbe22a5ad33806fe82 (diff) | |
*** empty log message ***
| -rw-r--r-- | ev_poll.c | 34 | 
1 files changed, 19 insertions, 15 deletions
| @@ -1,7 +1,7 @@  /*   * libev poll fd activity backend   * - * Copyright (c) 2007,2008,2009 Marc Alexander Lehmann <libev@schmorp.de> + * Copyright (c) 2007,2008,2009,2010 Marc Alexander Lehmann <libev@schmorp.de>   * All rights reserved.   *   * Redistribution and use in source and binary forms, with or without modifica- @@ -106,20 +106,24 @@ poll_poll (EV_P_ ev_tstamp timeout)      }    else      for (p = polls; res; ++p) -      if (expect_false (p->revents)) /* this expect is debatable */ -        { -          --res; - -          if (expect_false (p->revents & POLLNVAL)) -            fd_kill (EV_A_ p->fd); -          else -            fd_event ( -              EV_A_ -              p->fd, -              (p->revents & (POLLOUT | POLLERR | POLLHUP) ? EV_WRITE : 0) -              | (p->revents & (POLLIN | POLLERR | POLLHUP) ? EV_READ : 0) -            ); -        } +      { +        assert (("libev: poll() returned illegal result, broken BSD kernel?", p < polls + pollcnt)); + +        if (expect_false (p->revents)) /* this expect is debatable */ +          { +            --res; + +            if (expect_false (p->revents & POLLNVAL)) +              fd_kill (EV_A_ p->fd); +            else +              fd_event ( +                EV_A_ +                p->fd, +                (p->revents & (POLLOUT | POLLERR | POLLHUP) ? EV_WRITE : 0) +                | (p->revents & (POLLIN | POLLERR | POLLHUP) ? EV_READ : 0) +              ); +          } +      }  }  int inline_size | 
