[waffle] [PATCH 07/11] core: Add func wcore_attrib_list_copy()
Emil Velikov
emil.l.velikov at gmail.com
Mon Dec 29 13:29:10 PST 2014
On 23/12/14 01:02, Chad Versace wrote:
> 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;
> }
>
Sounds good, and with that one in we might want to handle the NULL in
waffle_window_create2() with patch 09.
Thanks for keeping with my nitpicks :-)
-Emil
More information about the waffle
mailing list