aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--plugin_dbus.c32
1 files changed, 24 insertions, 8 deletions
diff --git a/plugin_dbus.c b/plugin_dbus.c
index af5cfc1..a7b623e 100644
--- a/plugin_dbus.c
+++ b/plugin_dbus.c
@@ -143,6 +143,7 @@ static void free_args(int argc, char **argv);
static int lcd_dbus_init(void);
static void handle_inbound_signal(void *signal, int argc, char **argv);
+static void free_handle_signal(handle_signal_t * sig);
//given a signal, will add a hook so when the signal appears your callback is called
static lcd_sig_t *lcd_register_signal(const char *sender, const char *path,
@@ -178,11 +179,17 @@ static int clear_signal_txt(const int sig)
if (s == NULL) {
return 1;
}
- s->argc = 0;
+ int i;
if (s->arguments != NULL) {
+ for (i = 0; i < s->argc; i++) {
+ if (s->arguments[i] != NULL) {
+ free(s->arguments[i]);
+ }
+ }
free(s->arguments);
s->arguments = NULL;
}
+ s->argc = 0;
return 0;
}
@@ -309,17 +316,26 @@ static void load_dbus_cfg(void)
sig_info->event_name = strdup(eventname);
}
- if (!lcd_register_signal(sender, path, interface, member, handle_inbound_signal, sig_info, free)) {
+ if (!lcd_register_signal(sender, path, interface, member, handle_inbound_signal,
+ sig_info, (void (*)(void *)) free_handle_signal)) {
error("[DBus] Error Registering signal %d", i);
}
+ cleanup:
+ free(sender);
+ free(path);
+ free(interface);
+ free(member);
+ free(eventname);
+ }
+}
+
+static void free_handle_signal(handle_signal_t * sig)
+{
+ if (sig->event_name != NULL) {
+ free(sig->event_name);
}
- cleanup:
- free(sender);
- free(path);
- free(interface);
- free(member);
- free(eventname);
+ free(sig);
}
/* plugin initialization */
ollow=1'>[lcd4linux @ 2002-12-08 07:36:06 by reinelt]reinelt11-315/+314 2002-12-06[lcd4linux @ 2002-12-06 07:38:43 by reinelt]reinelt6-1305/+2559 2002-12-05[lcd4linux @ 2002-12-05 19:23:01 by reinelt]reinelt3-7/+16 2002-12-05[lcd4linux @ 2002-12-05 19:12:47 by reinelt]reinelt1-3/+15 2002-12-05[lcd4linux @ 2002-12-05 19:09:57 by reinelt]reinelt6-17/+29 2002-09-12[lcd4linux @ 2002-09-12 05:24:54 by reinelt]reinelt1-478/+199 2002-09-11[lcd4linux @ 2002-09-11 05:32:35 by reinelt]reinelt1-255/+47 2002-09-11[lcd4linux @ 2002-09-11 05:16:32 by reinelt]reinelt8-476/+1335 2002-08-30[lcd4linux @ 2002-08-30 03:54:01 by reinelt]reinelt1-3/+8 2002-08-22[lcd4linux @ 2002-08-22 05:51:36 by reinelt]reinelt1-7/+4 2002-08-21[lcd4linux @ 2002-08-21 06:09:53 by reinelt]reinelt2-10/+48 2002-08-19[lcd4linux @ 2002-08-19 10:51:06 by reinelt]reinelt2-259/+60 2002-08-19[lcd4linux @ 2002-08-19 09:43:43 by reinelt]reinelt1-261/+57 2002-08-19[lcd4linux @ 2002-08-19 09:30:18 by reinelt]reinelt1-256/+106 2002-08-19[lcd4linux @ 2002-08-19 09:11:34 by reinelt]reinelt2-257/+51 2002-08-19[lcd4linux @ 2002-08-19 07:52:19 by reinelt]reinelt3-8/+17 2002-08-19[lcd4linux @ 2002-08-19 07:36:29 by reinelt]reinelt7-359/+481 2002-08-19[lcd4linux @ 2002-08-19 04:41:20 by reinelt]reinelt20-32/+166 2002-08-18[lcd4linux @ 2002-08-18 08:11:11 by reinelt]reinelt1-26/+28 2002-08-17[lcd4linux @ 2002-08-17 14:14:21 by reinelt]reinelt3-67/+101 2002-08-17[lcd4linux @ 2002-08-17 13:10:22 by reinelt]reinelt9-182/+765 2002-08-17[lcd4linux @ 2002-08-17 12:54:08 by reinelt]reinelt1-7/+23 2002-04-30[lcd4linux @ 2002-04-30 07:20:15 by reinelt]reinelt2-173/+129 2002-04-29[lcd4linux @ 2002-04-29 11:00:25 by reinelt]reinelt14-2339/+5100 2001-09-14[lcd4linux @ 2001-09-14 05:57:06 by reinelt]reinelt1-1/+5 2001-09-13[lcd4linux @ 2001-09-13 07:40:57 by reinelt]reinelt1-0/+6 2001-09-12[lcd4linux @ 2001-09-12 06:17:22 by reinelt]reinelt2-1/+8 2001-09-12[lcd4linux @ 2001-09-12 05:58:16 by reinelt]reinelt3-9/+27 2001-09-12[lcd4linux @ 2001-09-12 05:37:22 by reinelt]reinelt4-23/+99 2001-09-11[lcd4linux @ 2001-09-11 06:43:43 by reinelt]reinelt1-1/+10