7 Commits
Author SHA1 Message Date
Joachim Nilsson cebe66e8a4 Update change logs and bump version for v2.1.1 release
Also bump ABI revision, code change.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-28 14:03:56 +01:00
Joachim Nilsson dd651ae791 Call watcher callback as last action for watcher, may delete itself
A watcher callback may be a timeout callback, or similar, that deletes
itself and the watcher.  So we should not dereference anything in the
watcher after the callback.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-28 13:53:10 +01:00
Joachim Nilsson a528405258 Minor, whitespace
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-01-28 13:50:50 +01:00
Joachim Nilsson 70f04c10e1 Merge pull request #13 from tisyang/master
Fix example code of timer usage not alarm in README.md
2017-11-22 02:33:35 +01:00
tisyang e3dca8255d Fix example code of timer usage not alarm in README.md 2017-11-22 09:25:12 +08:00
Joachim Nilsson dbf8c0dae2 Doc: a timer must have a non-zero timeout value to be armed properly
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-19 11:29:19 +01:00
Joachim Nilsson f75b1d5080 debian/changelog: New upstream release, new .deb package
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-14 17:41:09 +01:00
9 changed files with 48 additions and 10 deletions

No files matched your search

+1 -1
View File
@@ -69,7 +69,7 @@ int uev_io_set (uev_t *w, int fd, int events);
int uev_io_start (uev_t *w);
int uev_io_stop (uev_t *w);
/* Timer watcher: schedule a relative timer, timeout and period in milliseconds */
/* Timer watcher: schedule a relative timer, timeout (must be non-zero) and period in milliseconds */
int uev_timer_init (uev_ctx_t *ctx, uev_t *w, uev_cb_t *cb, void *arg, int timeout, int period);
int uev_timer_set (uev_t *w, int timeout, int period); /* Change timeout or period */
int uev_timer_start (uev_t *w); /* Restart a stopped timer */
+12 -1
View File
@@ -3,6 +3,16 @@ Change Log
All notable changes to the project are documented in this file.
[v2.1.1][] - 2018-01-28
-----------------------
### Fixes
- Fix use after free in main event loop if watcher deletes itself in
the callback. I.e., the callback must be the last action for the
watcher in the event loop.
- Doc timer example fix by @tisyang
- Doc timer updates, non-zero timeout required
[v2.1.0][] - 2017-11-14
-----------------------
@@ -326,7 +336,8 @@ v0.0.1 - 2012-03-17
Lua users mailing list.
[UNRELEASED]: https://github.com/troglobit/libuev/compare/v2.1.0...HEAD
[UNRELEASED]: https://github.com/troglobit/libuev/compare/v2.1.1...HEAD
[v2.1.1]: https://github.com/troglobit/libuev/compare/v2.1.0...v2.1.1
[v2.1.0]: https://github.com/troglobit/libuev/compare/v2.0.0...v2.1.0
[v2.0.0]: https://github.com/troglobit/libuev/compare/v1.6.0...v2.0.0
[v1.6.0]: https://github.com/troglobit/libuev/compare/v1.5.2...v1.6.0
+1 -1
View File
@@ -59,7 +59,7 @@ int main(void)
uev_init(&ctx);
/* Set up a timer watcher to call cb() every other second */
uev_timer_init(&ctx, &timer, cb, NULL, 0, 2 * 1000);
uev_timer_init(&ctx, &timer, cb, NULL, 2 * 1000, 2 * 1000);
return uev_run(&ctx, 0);
}
+1 -1
View File
@@ -1,4 +1,4 @@
AC_INIT(libuev, 2.1.0, https://github.com/troglobit/libuev/issues)
AC_INIT(libuev, 2.1.1, https://github.com/troglobit/libuev/issues)
AM_INIT_AUTOMAKE([1.11 foreign no-dist-gzip dist-xz])
AM_SILENT_RULES([yes])
+20
View File
@@ -1,3 +1,23 @@
libuev (2.1.1) unstable; urgency=medium
* Minor bugfix release
* Use native version numbering for package
-- Joachim Nilsson <troglobit@gmail.com> Sun, 28 Jan 2018 13:38:00 +0100
libuev (2.1.0-1) unstable; urgency=medium
* New upstream release. Further improvements to failure modes, some
fixes to regressions introduced in v2.0.
- Unconditionally stop I/O watchers on UEV_HUP and UEV_ERR conditions.
- Attempt to restart failing signal watchers before dropping to error.
- Properly de-register signal and cron/timer watchers on error.
- Fix possible double close() on cron/timer watchers.
- Documentation updates, improved examples, and unit tests.
-- Joachim Nilsson <troglobit@gmail.com> Tue, 14 Nov 2017 17:40:43 +0100
libuev (2.0.0-1) unstable; urgency=medium
* Major new upstream version, possibly incompatible changes to both
+1 -1
View File
@@ -2,7 +2,7 @@ lib_LTLIBRARIES = libuev.la
libuev_la_SOURCES = uev.c io.c timer.c signal.c cron.c
libuev_la_CPPFLAGS = -D_GNU_SOURCE -D_TIME_BITS=64
libuev_la_CFLAGS = -W -Wall -Wextra
libuev_la_LDFLAGS = $(AM_LDFLAGS) -version-info 2:0:0
libuev_la_LDFLAGS = $(AM_LDFLAGS) -version-info 2:1:0
noinst_PROGRAMS = bench
bench_CPPFLAGS = -D_GNU_SOURCE
-1
View File
@@ -60,7 +60,6 @@ int uev_io_init(uev_ctx_t *ctx, uev_t *w, uev_cb_t *cb, void *arg, int fd, int e
*/
int uev_io_set(uev_t *w, int fd, int events)
{
if ((events & UEV_ONESHOT) && _uev_watcher_active(w))
return _uev_watcher_rearm(w);
+5 -1
View File
@@ -93,9 +93,13 @@ int uev_timer_init(uev_ctx_t *ctx, uev_t *w, uev_cb_t *cb, void *arg, int timeou
/**
* Reset a timer
* @param w Watcher to reset
* @param timeout Timeout in milliseconds before @param cb is called
* @param timeout Timeout in milliseconds before @param cb is called, zero disarms timer
* @param period For periodic timers this is the period time that @param timeout is reset to
*
* Note, the @param timeout value must be non-zero. Setting it to zero
* will disarm the timer. This is the underlying Linux function @func
* timerfd_settimer() which has this behavior.
*
* @return POSIX OK(0) or non-zero with @param errno set on error.
*/
int uev_timer_set(uev_t *w, int timeout, int period)
+7 -3
View File
@@ -365,9 +365,6 @@ int uev_run(uev_ctx_t *ctx, int flags)
break;
}
if (w->cb)
w->cb(w, w->arg, events & UEV_EVENT_MASK);
if (UEV_CRON_TYPE == w->type) {
if (!w->u.c.when)
uev_timer_stop(w);
@@ -376,6 +373,13 @@ int uev_run(uev_ctx_t *ctx, int flags)
if (!w->u.t.timeout)
uev_timer_stop(w);
}
/*
* NOTE: Must be last action for watcher, the
* callback may delete itself.
*/
if (w->cb)
w->cb(w, w->arg, events & UEV_EVENT_MASK);
}
if (flags & UEV_ONCE)