On Sun, May 4, 2014 at 5:00 PM, Alexander Hall <[email protected]> wrote:
> On 05/04/14 21:50, Jean-Philippe Ouellet wrote:
>>
>> On Sun, May 04, 2014 at 12:17:16PM -0600, Theo de Raadt wrote:
>>>
>>> We are going to completely ignore diffs which change multiple idioms
>>> at once.
>>
>>
>> Okay.
>>
>>> That is how mistakes get made.
>>
>>
>> Yep, more true than I realized.
>>
>>
>> Here's a simpler one:
>>
>> Index: apps.c
>> ===================================================================
>> RCS file: /cvs/src/lib/libssl/src/apps/apps.c,v
>> retrieving revision 1.45
>> diff -u -p -r1.45 apps.c
>> --- apps.c      3 May 2014 16:03:54 -0000       1.45
>> +++ apps.c      4 May 2014 19:35:59 -0000
>> @@ -209,13 +209,10 @@ chopup_args(ARGS * arg, char *buf, int *
>>         *argc = 0;
>>         *argv = NULL;
>>
>> -       i = 0;
>>         if (arg->count == 0) {
>>                 arg->count = 20;
>> -               arg->data = (char **)malloc(sizeof(char *) * arg->count);
>> +               arg->data = calloc(arg->count, sizeof(char *));
>>         }
>> -       for (i = 0; i < arg->count; i++)
>> -               arg->data[i] = NULL;
>
>
> General question; Given that NULL theoretically could be != 0, and that we
> generally compare e.g. the malloc() result to NULL specifically, is this
> approach acceptable?

The comparisons  `NULL == 0` and `malloc() == 0` are *value* comparison.

After the statement `void **p = calloc(1, sizeof(void **));`, the
comparisons `p == NULL` and therefore `p == 0`, which are *identical*,
are not necessarily true.

Yes, to be correct you can't assume the representation is a string of
NULs, but the rest of your post is misleading.

>
> /Alexander
>

Reply via email to