From ef5dac813ef3d10423ec7ca8255eea6d873278f1 Mon Sep 17 00:00:00 2001
From: Patrick Reynolds <patrick.reynolds@github.com>
Date: Wed, 12 Mar 2014 00:15:41 -0500
Subject: [PATCH 2/3] add stubs with warnings for 1.8.7 and 1.9.0

---
 ext/em.h | 21 +++++++++++++++++++++
 1 file changed, 21 insertions(+)

diff --git a/ext/em.h b/ext/em.h
index ff7c26c..5b9279d 100644
--- a/ext/em.h
+++ b/ext/em.h
@@ -60,6 +60,27 @@ See the file COPYING for complete licensing information.
   #define EmSelect rb_fd_select
 #endif
 
+#ifndef rb_fd_max
+#define fd_check(n) (((n) < FD_SETSIZE) ? 1 : 0*fprintf(stderr, "fd %d too large for select\n", (n)))
+typedef fd_set rb_fdset_t;
+#define rb_fd_zero(f) FD_ZERO(f)
+#define rb_fd_set(n, f) do { if (fd_check(n)) FD_SET((n), (f)); } while(0)
+#define rb_fd_clr(n, f) do { if (fd_check(n)) FD_CLR((n), (f)); } while(0)
+#define rb_fd_isset(n, f) (fd_check(n) ? FD_ISSET((n), (f)) : 0)
+#define rb_fd_copy(d, s, n) (*(d) = *(s))
+#define rb_fd_dup(d, s) (*(d) = *(s))
+#define rb_fd_resize(n, f)  ((void)(f))
+#define rb_fd_ptr(f)  (f)
+#define rb_fd_init(f) FD_ZERO(f)
+#define rb_fd_init_copy(d, s) (*(d) = *(s))
+#define rb_fd_term(f) ((void)(f))
+#define rb_fd_max(f)  FD_SETSIZE
+#define rb_fd_select(n, rfds, wfds, efds, timeout)  \
+  select(fd_check((n)-1) ? (n) : FD_SETSIZE, (rfds), (wfds), (efds), (timeout))
+#define rb_thread_fd_select(n, rfds, wfds, efds, timeout)  \
+  rb_thread_select(fd_check((n)-1) ? (n) : FD_SETSIZE, (rfds), (wfds), (efds), (timeout))
+#endif
+
 class EventableDescriptor;
 class InotifyDescriptor;
 
-- 
2.1.4

