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
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn


------------------------------------------------------------------------------

_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to