From: Sebastian D. <seb...@ta...> - 2010-05-07 18:02:27
|
Enlightenment SVN wrote: > Log: > revert broken dbus return handling, readd stringshares Please! Don't mess with code you don't understand! Sebastian > > Author: discomfitor > Date: 2010-05-07 09:48:41 -0700 (Fri, 07 May 2010) > New Revision: 48670 > > Modified: > trunk/e_dbus/src/lib/hal/e_hal_device.c trunk/e_dbus/src/lib/hal/e_hal_manager.c > > Modified: trunk/e_dbus/src/lib/hal/e_hal_device.c > =================================================================== > --- trunk/e_dbus/src/lib/hal/e_hal_device.c 2010-05-07 15:49:06 UTC (rev 48669) > +++ trunk/e_dbus/src/lib/hal/e_hal_device.c 2010-05-07 16:48:41 UTC (rev 48670) > @@ -17,6 +17,7 @@ > E_Hal_Device_Get_Property_Return *ret = NULL; > DBusMessageIter iter; > int type; > + char *tmp; > > ret = calloc(1, sizeof(E_Hal_Device_Get_Property_Return)); > if (!ret) > @@ -30,7 +31,8 @@ > switch(type) > { > case DBUS_TYPE_STRING: > - dbus_message_iter_get_basic(&iter, &(ret->val.s)); > + dbus_message_iter_get_basic(&iter, &tmp); > + ret->val.s = eina_stringshare_add(tmp); > break; > case DBUS_TYPE_INT32: > dbus_message_iter_get_basic(&iter, &(ret->val.i)); > @@ -52,6 +54,14 @@ > E_Hal_Device_Get_Property_Return *ret = data; > > if (!ret) return; > + if (ret->type == E_HAL_PROPERTY_TYPE_STRLIST) > + { > + const char *s; > + EINA_LIST_FREE(ret->val.strlist, s) > + eina_stringshare_del(s); > + } > + else if (ret->type == E_HAL_PROPERTY_TYPE_STRING) > + eina_stringshare_del(ret->val.s); > free(ret); > } > > @@ -75,6 +85,7 @@ > { > E_Hal_Device_Get_All_Properties_Return *ret = NULL; > DBusMessageIter iter, a_iter, s_iter, v_iter; > + const char *tmp; > > /* a{sv} = array of string+variant */ > if (!dbus_message_has_signature(msg, "a{sv}")) > @@ -107,7 +118,8 @@ > { > case DBUS_TYPE_STRING: > prop->type = E_HAL_PROPERTY_TYPE_STRING; > - dbus_message_iter_get_basic(&v_iter, &(prop->val.s)); > + dbus_message_iter_get_basic(&v_iter, &tmp); > + prop->val.s = eina_stringshare_add(tmp); > break; > case DBUS_TYPE_INT32: > prop->type = E_HAL_PROPERTY_TYPE_INT; > @@ -135,7 +147,8 @@ > { > char *str; > dbus_message_iter_get_basic(&list_iter, &str); > - prop->val.strlist = eina_list_append(prop->val.strlist, str); > + tmp = eina_stringshare_add(str); > + prop->val.strlist = eina_list_append(prop->val.strlist, tmp); > dbus_message_iter_next(&list_iter); > } > } > > Modified: trunk/e_dbus/src/lib/hal/e_hal_manager.c > =================================================================== > --- trunk/e_dbus/src/lib/hal/e_hal_manager.c 2010-05-07 15:49:06 UTC (rev 48669) > +++ trunk/e_dbus/src/lib/hal/e_hal_manager.c 2010-05-07 16:48:41 UTC (rev 48670) > @@ -34,7 +34,7 @@ > > dbus_message_iter_get_basic(&sub, &dev); > if (dev) > - ret->strings = eina_list_append(ret->strings, dev); > + ret->strings = eina_list_append(ret->strings, eina_stringshare_add(dev)); > dbus_message_iter_next(&sub); > } > > @@ -45,9 +45,11 @@ > free_string_list(void *data) > { > E_Hal_String_List_Return *ret = data; > + const char *x; > > if (!ret) return; > - eina_list_free(ret->strings); > + EINA_LIST_FREE(ret->strings, x) > + eina_stringshare_del(x); > free(ret); > } > > > > ------------------------------------------------------------------------------ > > _______________________________________________ > enlightenment-svn mailing list > enl...@li... > https://lists.sourceforge.net/lists/listinfo/enlightenment-svn |