/*
* ion/libmainloop/defer.c
*
- * Copyright (c) Tuomo Valkonen 1999-2007.
+ * Copyright (c) Tuomo Valkonen 1999-2008.
*
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
+ * See the included file LICENSE for details.
*/
/* This file contains routines for deferred execution of potentially
d->action=action;
d->list=list;
d->fn=extl_fn_none();
-
+ watch_init(&(d->watch));
+
if(obj!=NULL)
watch_setup(&(d->watch), obj, defer_watch_handler);
d->action=NULL;
d->list=list;
d->fn=extl_ref_fn(fn);
-
watch_init(&(d->watch));
LINK_ITEM(*list, d, next, prev);
free_defer(d);
if(a!=NULL){
- if(obj!=NULL)
- a(obj);
+ /* The deferral should not be on the list, if there
+ * was an object, and it got destroyed.
+ */
+ /*if(obj!=NULL)*/
+ a(obj);
}else if(fn!=extl_fn_none()){
extl_call(fn, NULL, NULL);
extl_unref_fn(fn);