Hello Libev,

  The attached patch fixes broken strict aliasing in ev_timer_set()
  and ev_periodic_at() macros.

-- 
Best regards,
 Denis                          mailto:[email protected]
Index: ev.h
===================================================================
RCS file: /schmorpforge/libev/ev.h,v
retrieving revision 1.131
diff -u -r1.131 ev.h
--- ev.h        18 Jan 2010 13:31:42 -0000      1.131
+++ ev.h        18 Feb 2010 14:58:20 -0000
@@ -580,7 +580,7 @@
 } while (0)
 
 #define ev_io_set(ev,fd_,events_)            do { (ev)->fd = (fd_); 
(ev)->events = (events_) | EV__IOFDSET; } while (0)
-#define ev_timer_set(ev,after_,repeat_)      do { ((ev_watcher_time 
*)(ev))->at = (after_); (ev)->repeat = (repeat_); } while (0)
+#define ev_timer_set(ev,after_,repeat_)      do { ((ev_watcher_time *)(void 
*)(ev))->at = (after_); (ev)->repeat = (repeat_); } while (0)
 #define ev_periodic_set(ev,ofs_,ival_,rcb_)  do { (ev)->offset = (ofs_); 
(ev)->interval = (ival_); (ev)->reschedule_cb = (rcb_); } while (0)
 #define ev_signal_set(ev,signum_)            do { (ev)->signum = (signum_); } 
while (0)
 #define ev_child_set(ev,pid_,trace_)         do { (ev)->pid = (pid_); 
(ev)->flags = !!(trace_); } while (0)
@@ -618,7 +618,7 @@
 # define ev_set_priority(ev,pri)             (   (ev_watcher *)(void 
*)(ev))->priority = (pri)
 #endif
 
-#define ev_periodic_at(ev)                   (+((ev_watcher_time *)(ev))->at)
+#define ev_periodic_at(ev)                   (+((ev_watcher_time *)(void 
*)(ev))->at)
 
 #ifndef ev_set_cb
 # define ev_set_cb(ev,cb_)                   ev_cb (ev) = (cb_)
_______________________________________________
libev mailing list
[email protected]
http://lists.schmorp.de/cgi-bin/mailman/listinfo/libev

Reply via email to