diff options
Diffstat (limited to 'lem/io/stream.c')
-rw-r--r-- | lem/io/stream.c | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/lem/io/stream.c b/lem/io/stream.c index 9c53ecb..610567e 100644 --- a/lem/io/stream.c +++ b/lem/io/stream.c @@ -30,6 +30,16 @@ struct stream { #define STREAM_FROM_WATCH(w, member)\ (struct stream *)(((char *)w) - offsetof(struct stream, member)) +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wstrict-aliasing" +static inline void +stream_watch_init(struct stream *s, int fd) +{ + ev_io_init(&s->r, NULL, fd, EV_READ); + ev_io_init(&s->w, NULL, fd, EV_WRITE); +} +#pragma GCC diagnostic pop + static struct stream * stream_new(lua_State *T, int fd, int mt) { @@ -39,11 +49,7 @@ stream_new(lua_State *T, int fd, int mt) lua_setmetatable(T, -2); /* initialize userdata */ -#pragma GCC diagnostic push -#pragma GCC diagnostic ignored "-Wstrict-aliasing" - ev_io_init(&s->r, NULL, fd, EV_READ); - ev_io_init(&s->w, NULL, fd, EV_WRITE); -#pragma GCC diagnostic pop + stream_watch_init(s, fd); s->open = 1; s->r.data = NULL; s->w.data = NULL; |