Commit Diff


commit - 94eeacc5a3d331d18f064fe93df5209168a3d444
commit + 562f76f02be1081713e334d1f6faeef7876a55a7
blob - f5e9da904c4e079bb80b2f10418d4becad566530
blob + 52810501903271f6d82bf5438d23d15b7acb1b1c
--- ev/ev.ha
+++ ev/ev.ha
@@ -98,6 +98,15 @@ export fn evadd(
 	data: nullable *opaque
 ) void = {
 	const b = evloop: *base;
+
+	for (let i = 0z; i < len(b.wip.pfds); i += 1) {
+		if (b.wip.pfds[i].fd != fd)
+			continue;
+		b.wip.pfds[i].events = ev2poll(ev);
+		b.wip.cbs[i] = cb { cb = f, data = data };
+		return;
+	};
+
 	append(b.wip.pfds, poll::pollfd {
 		fd = fd,
 		events = ev2poll(ev),