zehortigoza pushed a commit to branch master.
commit 065b2da86091fff058b4203bd3f8595be8862d78
Author: Carsten Haitzler (Rasterman) <[email protected]>
Date: Thu Jul 4 10:56:43 2013 +0900
eldbus - better fix for dbus_conn becoming null in dispatch
---
src/lib/eldbus_core.c | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/src/lib/eldbus_core.c b/src/lib/eldbus_core.c
index a92d1e2..56fcd40 100644
--- a/src/lib/eldbus_core.c
+++ b/src/lib/eldbus_core.c
@@ -756,6 +756,7 @@ static Eina_Bool
eldbus_idler(void *data)
{
Eldbus_Connection *conn = data;
+ DBusConnection *dbus_conn;
DBG("Connection@%p: Dispatch status: %d", conn,
dbus_connection_get_dispatch_status(conn->dbus_conn));
@@ -768,12 +769,13 @@ eldbus_idler(void *data)
conn->idler = NULL;
return ECORE_CALLBACK_CANCEL;
}
-
- dbus_connection_ref(conn->dbus_conn);
+ // make local copy of dbus_conn because something in dispatch can set
+ // conn->dbus_conn to NULL, thus losing our handle
+ dbus_conn = conn->dbus_conn;
+ dbus_connection_ref(dbus_conn);
DBG("Connection@%p: Dispatching", conn);
- dbus_connection_dispatch(conn->dbus_conn);
- // add the if check as dispact may set conn->dbus_conn to NULL in a cb
- if (conn->dbus_conn) dbus_connection_unref(conn->dbus_conn);
+ dbus_connection_dispatch(dbus_conn);
+ dbus_connection_unref(dbus_conn);
return ECORE_CALLBACK_RENEW;
}
--
------------------------------------------------------------------------------
Get your SQL database under version control now!
Version control is standard for application code, but databases havent
caught up. So what steps can you take to put your SQL databases under
version control? Why should you start doing it? Read more to find out.
http://pubads.g.doubleclick.net/gampad/clk?id=49501711&iu=/4140/ostg.clktrk