On Wed, Jan 11, 2012 at 11:41 AM, Vincent Torri <vincent.to...@gmail.com> wrote:
> On Wed, Jan 11, 2012 at 11:37 AM, Enlightenment SVN
> <no-re...@enlightenment.org> wrote:
>> Log:
>> eina: massiv fix for Eina_Value.
>>
>>  Should be more portable and work with C++.
>>
>>  NOTE: I still see an aliasing break in eina_value_pset, but wasn't
>>  able to figure how to solve it.
>>
>>
>> Author:       cedric
>> Date:         2012-01-11 02:37:13 -0800 (Wed, 11 Jan 2012)
>> New Revision: 67065
>> Trac:         http://trac.enlightenment.org/e/changeset/67065
>>
>> Modified:
>>  trunk/eina/src/include/eina_inline_value.x 
>> trunk/eina/src/include/eina_value.h trunk/eina/src/lib/eina_value.c
>>
>> Modified: trunk/eina/src/include/eina_inline_value.x
>> ===================================================================
>> --- trunk/eina/src/include/eina_inline_value.x  2012-01-11 10:35:52 UTC (rev 
>> 67064)
>> +++ trunk/eina/src/include/eina_inline_value.x  2012-01-11 10:37:13 UTC (rev 
>> 67065)
>> @@ -20,6 +20,8 @@
>>  #define EINA_INLINE_VALUE_X_
>>
>>  #include <string.h>
>> +#include <alloca.h>
>
> aaaaaaaaarrrrrrrrggggggg : not portable at all !!!!!!!

Damn forgot that one. It was just a missing header. Hum, we need to
have an EINA_HAVE_ALLOCA or something like that now, I guess.

>> +
>>  #include "eina_stringshare.h"
>>
>>  /* NOTE: most of value is implemented here for performance reasons */
>> @@ -127,7 +129,7 @@
>>      {
>>         if (type == EINA_VALUE_TYPE_STRINGSHARE)
>>           {
>> -             if (value->value.ptr) eina_stringshare_del(value->value.ptr);
>> +             if (value->value.ptr) eina_stringshare_del((const char*) 
>> value->value.ptr);
>>           }
>>         else if (type == EINA_VALUE_TYPE_STRING)
>>           {
>> @@ -161,7 +163,7 @@
>>  #ifndef EINA_VALUE_NO_OPTIMIZE
>>    if (type == EINA_VALUE_TYPE_UCHAR)
>>      {
>> -        unsigned char *ta = pa, *tb = pb;
>> +        unsigned char *ta = (unsigned char *) pa, *tb = (unsigned char *) 
>> pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -170,7 +172,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_USHORT)
>>      {
>> -        unsigned short *ta = pa, *tb = pb;
>> +        unsigned short *ta = (unsigned short *) pa, *tb = (unsigned short 
>> *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -179,7 +181,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_UINT)
>>      {
>> -        unsigned int *ta = pa, *tb = pb;
>> +        unsigned int *ta = (unsigned int *) pa, *tb = (unsigned int *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -188,7 +190,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_ULONG)
>>      {
>> -        unsigned long *ta = pa, *tb = pb;
>> +        unsigned long *ta = (unsigned long *) pa, *tb = (unsigned long *) 
>> pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -197,7 +199,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_UINT64)
>>      {
>> -        uint64_t *ta = pa, *tb = pb;
>> +        uint64_t *ta = (uint64_t *) pa, *tb = (uint64_t *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -206,7 +208,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_CHAR)
>>      {
>> -        char *ta = pa, *tb = pb;
>> +        char *ta = (char *) pa, *tb = (char *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -215,7 +217,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_SHORT)
>>      {
>> -        short *ta = pa, *tb = pb;
>> +        short *ta = (short *) pa, *tb = (short *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -224,7 +226,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_INT)
>>      {
>> -        int *ta = pa, *tb = pb;
>> +        int *ta = (int *) pa, *tb = (int *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -233,7 +235,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_LONG)
>>      {
>> -        long *ta = pa, *tb = pb;
>> +        long *ta = (long *) pa, *tb = (long *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -242,7 +244,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_INT64)
>>      {
>> -        int64_t *ta = pa, *tb = pb;
>> +        int64_t *ta = (int64_t *) pa, *tb = (int64_t *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -251,7 +253,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_FLOAT)
>>      {
>> -        float *ta = pa, *tb = pb;
>> +        float *ta = (float *) pa, *tb = (float *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -260,7 +262,7 @@
>>      }
>>    else if (type == EINA_VALUE_TYPE_DOUBLE)
>>      {
>> -        double *ta = pa, *tb = pb;
>> +        double *ta = (double *) pa, *tb = (double *) pb;
>>         if (*ta < *tb)
>>           return -1;
>>         else if (*ta > *tb)
>> @@ -322,84 +324,84 @@
>>  #ifndef EINA_VALUE_NO_OPTIMIZE
>>    if (type == EINA_VALUE_TYPE_UCHAR)
>>      {
>> -        unsigned char *tmem = mem;
>> +        unsigned char *tmem = (unsigned char *) mem;
>>         *tmem = va_arg(args, unsigned int); /* promoted by va_arg */
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_USHORT)
>>      {
>> -        unsigned short *tmem = mem;
>> +        unsigned short *tmem = (unsigned short *) mem;
>>         *tmem = va_arg(args, unsigned int); /* promoted by va_arg */
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_UINT)
>>      {
>> -        unsigned int *tmem = mem;
>> +        unsigned int *tmem = (unsigned int *) mem;
>>         *tmem = va_arg(args, unsigned int);
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_ULONG)
>>      {
>> -        unsigned long *tmem = mem;
>> +        unsigned long *tmem = (unsigned long *) mem;
>>         *tmem = va_arg(args, unsigned long);
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_UINT64)
>>      {
>> -        uint64_t *tmem = mem;
>> +        uint64_t *tmem = (uint64_t *) mem;
>>         *tmem = va_arg(args, uint64_t);
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_CHAR)
>>      {
>> -        char *tmem = mem;
>> +        char *tmem = (char *) mem;
>>         *tmem = va_arg(args, int); /* promoted by va_arg */
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_SHORT)
>>      {
>> -        short *tmem = mem;
>> +        short *tmem = (short *) mem;
>>         *tmem = va_arg(args, int); /* promoted by va_arg */
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_INT)
>>      {
>> -        int *tmem = mem;
>> +        int *tmem = (int *) mem;
>>         *tmem = va_arg(args, int);
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_LONG)
>>      {
>> -        long *tmem = mem;
>> +        long *tmem = (long *) mem;
>>         *tmem = va_arg(args, long);
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_INT64)
>>      {
>> -        int64_t *tmem = mem;
>> +        int64_t *tmem = (int64_t *) mem;
>>         *tmem = va_arg(args, int64_t);
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_FLOAT)
>>      {
>> -        float *tmem = mem;
>> +        float *tmem = (float *) mem;
>>         *tmem = va_arg(args, double); /* promoted by va_arg */
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_DOUBLE)
>>      {
>> -        double *tmem = mem;
>> +        double *tmem = (double *) mem;
>>         *tmem = va_arg(args, double);
>>         return EINA_TRUE;
>>      }
>>    else if (type == EINA_VALUE_TYPE_STRINGSHARE)
>>      {
>> -        const char *str = va_arg(args, const char *);
>> +        const char *str = (const char *) va_arg(args, const char *);
>>         return eina_stringshare_replace((const char **)&value->value.ptr, 
>> str);
>>      }
>>    else if (type == EINA_VALUE_TYPE_STRING)
>>      {
>> -        const char *str = va_arg(args, const char *);
>> +        const char *str = (const char *) va_arg(args, const char *);
>>         free(value->value.ptr);
>>         if (!str)
>>           value->value.ptr = NULL;
>> @@ -460,19 +462,23 @@
>>      {
>>         if (type == EINA_VALUE_TYPE_STRINGSHARE)
>>           {
>> -             const char * const *str = ptr;
>> +             const char * const *pstr = (const char * const *) ptr;
>> +             const char *str = *pstr;
>> +
>>              return eina_stringshare_replace((const char 
>> **)&value->value.ptr,
>> -                                             *str);
>> +                                             str);
>>           }
>>         else if (type == EINA_VALUE_TYPE_STRING)
>>           {
>> -             const char * const *str = ptr;
>> +             const char * const * pstr = (const char * const *) ptr;
>> +             const char *str = *pstr;
>> +
>>              free(value->value.ptr);
>> -             if (!*str)
>> +             if (!str)
>>                value->value.ptr = NULL;
>>              else
>>                {
>> -                  value->value.ptr = strdup(*str);
>> +                  value->value.ptr = strdup(str);
>>                   if (!value->value.ptr)
>>                     {
>>                        eina_error_set(EINA_ERROR_OUT_OF_MEMORY);
>> @@ -526,7 +532,7 @@
>>  static inline Eina_Bool
>>  eina_value_array_setup(Eina_Value *value, const Eina_Value_Type *subtype, 
>> unsigned int step)
>>  {
>> -   Eina_Value_Array desc = {subtype, step, NULL};
>> +   Eina_Value_Array desc = { subtype, step, NULL };
>>    if (!eina_value_setup(value, EINA_VALUE_TYPE_ARRAY))
>>      return EINA_FALSE;
>>    if (!eina_value_pset(value, &desc))
>>
>> Modified: trunk/eina/src/include/eina_value.h
>> ===================================================================
>> --- trunk/eina/src/include/eina_value.h 2012-01-11 10:35:52 UTC (rev 67064)
>> +++ trunk/eina/src/include/eina_value.h 2012-01-11 10:37:13 UTC (rev 67065)
>> @@ -681,7 +681,7 @@
>>    const Eina_Value_Type *subtype; /**< how to allocate and access items */
>>    unsigned int step; /**< how to grow the members array */
>>    Eina_Inarray *array; /**< the array that holds data, members are of 
>> subtype->value_size bytes. */
>> - };
>> +};
>>
>>  /**
>>  * @brief Create generic value storage of type array.
>>
>> Modified: trunk/eina/src/lib/eina_value.c
>> ===================================================================
>> --- trunk/eina/src/lib/eina_value.c     2012-01-11 10:35:52 UTC (rev 67064)
>> +++ trunk/eina/src/lib/eina_value.c     2012-01-11 10:37:13 UTC (rev 67065)
>> @@ -28,10 +28,9 @@
>>  # include "config.h"
>>  #endif
>>
>> -/* _GNU_SOURCE: asprintf() */
>> -#ifndef _GNU_SOURCE
>> -#define _GNU_SOURCE
>> -#endif
>> +#include <stdio.h> /* asprintf() */
>> +#include <inttypes.h> /* PRId64 and PRIu64 */
>> +
>>  #include "eina_config.h"
>>  #include "eina_private.h"
>>  #include "eina_error.h"
>> @@ -42,9 +41,6 @@
>>  #include "eina_safety_checks.h"
>>  #include "eina_value.h"
>>
>> -#include <stdio.h> /* asprintf() */
>> -#include <inttypes.h> /* PRId64 and PRIu64 */
>> -
>>  /*============================================================================*
>>  *                                  Local                                    
>>  *
>>  *============================================================================*/
>> @@ -981,7 +977,7 @@
>>  static Eina_Bool
>>  _eina_value_type_char_convert_to(const Eina_Value_Type *type __UNUSED__, 
>> const Eina_Value_Type *convert, const void *type_mem, void *convert_mem)
>>  {
>> -   const char v = *(const char *)type_mem;
>> +   const signed char v = *(const signed char *)type_mem;
>>
>>    eina_error_set(0);
>>
>> @@ -1518,7 +1514,7 @@
>>         unsigned char other_mem = v;
>>         if (EINA_UNLIKELY(v < 0))
>>           return EINA_FALSE;
>> -        if (EINA_UNLIKELY(v > eina_value_uchar_max))
>> +        if (EINA_UNLIKELY((unsigned long) v > eina_value_uchar_max))
>>             return EINA_FALSE;
>>         return eina_value_type_pset(convert, convert_mem, &other_mem);
>>      }
>> @@ -1527,7 +1523,7 @@
>>         unsigned short other_mem = v;
>>         if (EINA_UNLIKELY(v < 0))
>>           return EINA_FALSE;
>> -        if (EINA_UNLIKELY(v > eina_value_ushort_max))
>> +        if (EINA_UNLIKELY((unsigned long) v > eina_value_ushort_max))
>>           return EINA_FALSE;
>>         return eina_value_type_pset(convert, convert_mem, &other_mem);
>>      }
>> @@ -1536,7 +1532,7 @@
>>         unsigned int other_mem = v;
>>         if (EINA_UNLIKELY(v < 0))
>>           return EINA_FALSE;
>> -        if (EINA_UNLIKELY(v > eina_value_uint_max))
>> +        if (EINA_UNLIKELY((unsigned long) v > eina_value_uint_max))
>>           return EINA_FALSE;
>>         return eina_value_type_pset(convert, convert_mem, &other_mem);
>>      }
>>
>>
>> ------------------------------------------------------------------------------
>> Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
>> infrastructure or vast IT resources to deliver seamless, secure access to
>> virtual desktops. With this all-in-one solution, easily deploy virtual
>> desktops for less than the cost of PCs and save 60% on VDI infrastructure
>> costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
>> _______________________________________________
>> enlightenment-svn mailing list
>> enlightenment-...@lists.sourceforge.net
>> https://lists.sourceforge.net/lists/listinfo/enlightenment-svn
>
> ------------------------------------------------------------------------------
> Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
> infrastructure or vast IT resources to deliver seamless, secure access to
> virtual desktops. With this all-in-one solution, easily deploy virtual
> desktops for less than the cost of PCs and save 60% on VDI infrastructure
> costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
> _______________________________________________
> enlightenment-devel mailing list
> enlightenment-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/enlightenment-devel
>



-- 
Cedric BAIL

------------------------------------------------------------------------------
Ridiculously easy VDI. With Citrix VDI-in-a-Box, you don't need a complex
infrastructure or vast IT resources to deliver seamless, secure access to
virtual desktops. With this all-in-one solution, easily deploy virtual 
desktops for less than the cost of PCs and save 60% on VDI infrastructure 
costs. Try it free! http://p.sf.net/sfu/Citrix-VDIinabox
_______________________________________________
enlightenment-devel mailing list
enlightenment-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to