diff options
| author | root <root> | 2009-12-04 20:25:05 +0000 | 
|---|---|---|
| committer | root <root> | 2009-12-04 20:25:05 +0000 | 
| commit | 281663f4e9b5029ab9cd09cf4754de3165138ab7 (patch) | |
| tree | e4d38529e7ffc46a4ce09206203676cd1cef84ed | |
| parent | 3ed5385a0ebc98a31d2e2dc5ffa0052c248badff (diff) | |
*** empty log message ***
| -rw-r--r-- | Changes | 3 | ||||
| -rw-r--r-- | ev.c | 31 | 
2 files changed, 20 insertions, 14 deletions
| @@ -18,6 +18,9 @@ TODO: somehow unblock procmask?          - changed minimum glibc requirement from glibc 2.9 to 2.7, for            signalfd.          - add missing string.h include (Denis F. Latypoff). +        - only replace ev_stat.prev when we detect an actual difference, +          so prev is (almost) always different to attr. this might +          have caused the probems with 04_stat.t.  3.8  Sun Aug  9 14:30:45 CEST 2009  	- incompatible change: do not necessarily reset signal handler @@ -3103,25 +3103,28 @@ stat_timer_cb (EV_P_ ev_timer *w_, int revents)  {    ev_stat *w = (ev_stat *)(((char *)w_) - offsetof (ev_stat, timer)); -  /* we copy this here each the time so that */ -  /* prev has the old value when the callback gets invoked */ -  w->prev = w->attr; +  ev_statdata prev = w->attr;    ev_stat_stat (EV_A_ w);    /* memcmp doesn't work on netbsd, they.... do stuff to their struct stat */    if ( -    w->prev.st_dev      != w->attr.st_dev -    || w->prev.st_ino   != w->attr.st_ino -    || w->prev.st_mode  != w->attr.st_mode -    || w->prev.st_nlink != w->attr.st_nlink -    || w->prev.st_uid   != w->attr.st_uid -    || w->prev.st_gid   != w->attr.st_gid -    || w->prev.st_rdev  != w->attr.st_rdev -    || w->prev.st_size  != w->attr.st_size -    || w->prev.st_atime != w->attr.st_atime -    || w->prev.st_mtime != w->attr.st_mtime -    || w->prev.st_ctime != w->attr.st_ctime +    prev.st_dev      != w->attr.st_dev +    || prev.st_ino   != w->attr.st_ino +    || prev.st_mode  != w->attr.st_mode +    || prev.st_nlink != w->attr.st_nlink +    || prev.st_uid   != w->attr.st_uid +    || prev.st_gid   != w->attr.st_gid +    || prev.st_rdev  != w->attr.st_rdev +    || prev.st_size  != w->attr.st_size +    || prev.st_atime != w->attr.st_atime +    || prev.st_mtime != w->attr.st_mtime +    || prev.st_ctime != w->attr.st_ctime    ) { +      /* we only update w->prev on actual differences */ +      /* in case we test more often than invoke the callback, */ +      /* to ensure that prev is always different to attr */ +      w->prev = prev; +        #if EV_USE_INOTIFY          if (fs_fd >= 0)            { | 
