Common subdirectories: src/doc and src2/doc
diff -u src/event_stubs.c src2/event_stubs.c
--- src/event_stubs.c	2007-04-19 12:25:05.000000000 +0300
+++ src2/event_stubs.c	2007-04-19 13:08:55.000000000 +0300
@@ -12,6 +12,7 @@
 #include <sys/time.h>
 #include <stdlib.h>
 #include <event.h>
+#include <string.h>
 
 #include <caml/mlvalues.h>
 #include <caml/custom.h>
@@ -20,7 +21,7 @@
 #include <caml/callback.h>
 #include <caml/fail.h>
 
-#define struct_event_val(v) ((struct event*) Data_custom_val(v))
+#define struct_event_val(v) (*(struct event**) Data_custom_val(v))
 #define Is_some(v) (Is_block(v))
 
 static value * event_cb_closure = NULL;
@@ -32,12 +33,12 @@
 struct_event_finalize(value ve) 
 {
   struct event *ev = struct_event_val(ve);
-  /* This means that event_set is called. We can assume that there */
-  //  if(event_initialized(ev)) {
-    /* */
-  //  }
 
-  //  stat_free(struct_event_val(ve));
+  if (event_initialized(ev)) {
+    event_del(ev);
+  }
+  
+  caml_stat_free(ev);
 }
 
 static int 
@@ -89,8 +90,11 @@
 {
   CAMLparam0();
   CAMLlocal1(ve);
+  struct event* ev = caml_stat_alloc(sizeof(struct event));
+  memset(ev, 0, sizeof(*ev));
 
-  ve = alloc_custom(&struct_event_ops, sizeof(struct event), 0, 1);
+  ve = alloc_custom(&struct_event_ops, sizeof(struct event*), 0, 1);
+  *(struct event**) Data_custom_val(ve) = ev;
 
   CAMLreturn(ve);
 }
Common subdirectories: src/examples and src2/examples
