[waffle] [PATCH 07/11] core: Add func wcore_attrib_list_copy()

Chad Versace chad.versace at intel.com
Mon Dec 22 17:02:40 PST 2014


On 12/21/2014 09:00 AM, Emil Velikov wrote:
> On 16 December 2014 at 08:18, Chad Versace <chad.versace at linux.intel.com> wrote:
>> This is useful for making a writable copy of a read-only attribute list.
>>
>> Signed-off-by: Chad Versace <chad.versace at linux.intel.com>
>> ---
>>  src/waffle/core/wcore_attrib_list.c | 19 +++++++++++++++++++
>>  src/waffle/core/wcore_attrib_list.h |  3 +++
>>  2 files changed, 22 insertions(+)
>>
>> diff --git a/src/waffle/core/wcore_attrib_list.c b/src/waffle/core/wcore_attrib_list.c
>> index a7f087d..94013b9 100644
>> --- a/src/waffle/core/wcore_attrib_list.c
>> +++ b/src/waffle/core/wcore_attrib_list.c
>> @@ -28,6 +28,7 @@
>>  #include <stdbool.h>
>>  #include <stdint.h>
>>  #include <stddef.h>
>> +#include <string.h>
>>
>>  size_t
>>  wcore_attrib_list_length(const intptr_t attrib_list[])
>> @@ -43,6 +44,24 @@ wcore_attrib_list_length(const intptr_t attrib_list[])
>>      return (i - attrib_list) / 2;
>>  }
>>
>> +intptr_t*
>> +wcore_attrib_list_copy(const intptr_t attrib_list[])
>> +{
>> +    intptr_t *copy;
>> +
>> +    if (attrib_list) {
>> +        size_t length = wcore_attrib_list_length(attrib_list);
>> +        intptr_t size = (2 * length + 1) * sizeof(intptr_t);
>> +        copy = malloc(size);
>> +        memcpy(copy, attrib_list, size);
>> +    } else {
>> +        copy = malloc(sizeof(intptr_t));
>> +        copy[0] = 0;
>> +    }
> We might want to add error checking after the malloc - to silence
> static analysers at the very least :-)

Good idea. How about this?

   copy = malloc(size);
   if (!copy) {
      wcore_error(WAFFLE_ERROR_BAD_ALLOC);
      return NULL;
   }



More information about the waffle mailing list