Tilman Sauerbeck wrote:

Don't free 'params', free params[0], params[1] etc.
Fixed in included patch.

Also, you prolly should check that your strdup calls are succeeding.
Added this too, even though none of the other E_Lib calls check their strdup()'s for success

Aaron
Index: e17/apps/e/src/lib/E_Lib.h
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/lib/E_Lib.h,v
retrieving revision 1.3
diff -d -u -3 -r1.3 E_Lib.h
--- e17/apps/e/src/lib/E_Lib.h  19 Jul 2005 07:07:23 -0000      1.3
+++ e17/apps/e/src/lib/E_Lib.h  28 Jul 2005 20:15:46 -0000
@@ -94,6 +94,8 @@
    /* E desktop manipulation */
    EAPI void         e_lib_background_set             (const char *bgfile);
    EAPI void         e_lib_background_get             (void);
+   EAPI void         e_lib_desktop_background_add     (const char *con, const 
char *zone, const char *desk_x, const char *desk_y, const char *bgfile);
+   EAPI void         e_lib_desktop_background_del     (const char *con, const 
char *zone, const char *desk_x, const char *desk_y);
 
    /* E current theme manipulation */
    EAPI void         e_lib_theme_get                  (const char *category);
Index: e17/apps/e/src/lib/e_main.c
===================================================================
RCS file: /cvsroot/enlightenment/e17/apps/e/src/lib/e_main.c,v
retrieving revision 1.25
diff -d -u -3 -r1.25 e_main.c
--- e17/apps/e/src/lib/e_main.c 19 Jul 2005 07:07:23 -0000      1.25
+++ e17/apps/e/src/lib/e_main.c 28 Jul 2005 20:15:46 -0000
@@ -243,6 +243,46 @@
 }
 
 void
+e_lib_desktop_background_add(const char *con, const char *zone, const char 
*desk_x, const char *desk_y, const char *bgfile)
+{
+   char *params[5];
+   if(!bgfile | !desk_y | !desk_x | !zone | !con)
+     return;
+   params[0] = strdup(con);
+   params[1] = strdup(zone);
+   params[2] = strdup(desk_x);
+   params[3] = strdup(desk_y);
+   params[4] = strdup(bgfile);
+   if(!params[0] | !params[1] | !params[2] | !params[3] | !params[4])
+     return;
+   _e_ipc_call(E_IPC_OP_DESKTOP_BG_ADD, params);
+   free(params[0]);
+   free(params[1]);
+   free(params[2]);
+   free(params[3]);
+   free(params[4]);
+}
+
+void
+e_lib_desktop_background_del(const char *con, const char *zone, const char 
*desk_x, const char *desk_y)
+{
+   char *params[4];
+   if(!desk_y | !desk_x | !zone | !con)
+     return;
+   params[0] = strdup(con);
+   params[1] = strdup(zone);
+   params[2] = strdup(desk_x);
+   params[3] = strdup(desk_y);
+   if(!params[0] | !params[1] | !params[2] | !params[3])
+     return;
+   _e_ipc_call(E_IPC_OP_DESKTOP_BG_DEL, params);
+   free(params[0]);
+   free(params[1]);
+   free(params[2]);
+   free(params[3]);
+}
+
+void
 e_lib_theme_get(const char *category)
 {
    char *tmp;

Reply via email to