Le 31/12/2012 08:33, Otto Moerbeek a écrit :
> On Mon, Dec 31, 2012 at 04:53:15PM +1100, Aaron Mason wrote:
> 
>> Ok, I just tried freeing NULL, and it did nothing.  Granted it was on
>> a Linux system but still...
>>
> 
> Wrong method, Just check the definition of free(3). It is OK to call
> free(3) on a NULL pointer since C89 at least.
> 
>       -Otto
> 
>> I stand by my argument that there's no clear improvement, especially
>> on a modern system.
>>

Improvement on a modern system? No, there is not. It's just that you
avoid a nullcheck.

>> On Mon, Dec 31, 2012 at 4:50 PM, Aaron Mason <[email protected]> 
>> wrote:
>>> Maxime
>>>
>>> I'm not entirely clear on what you hoped to achieve with the diffs
>>> below, if anything you're inducing possible segfaults if any of those
>>> values are NULL.  That aside, I fail to see how this could be
>>> construed as any sort of improvement.
>>>

I don't hope to achieve anything. For the snprintf, it is evident to me
that a simple strlcpy is faster.

But do as you see fit.

>>>> Index: pfctl_osfp.c
>>>> ===================================================================
>>>> RCS file: /cvs/src/sbin/pfctl/pfctl_osfp.c,v
>>>> retrieving revision 1.18
>>>> diff -u -r1.18 pfctl_osfp.c
>>>> --- pfctl_osfp.c        18 Oct 2010 15:55:28 -0000      1.18
>>>> +++ pfctl_osfp.c        22 Dec 2012 07:08:28 -0000
>>>> @@ -112,16 +112,11 @@
>>>>
>>>>         while ((line = fgetln(in, &len)) != NULL) {
>>>>                 lineno++;
>>>> -               if (class)
>>>> -                       free(class);
>>>> -               if (version)
>>>> -                       free(version);
>>>> -               if (subtype)
>>>> -                       free(subtype);
>>>> -               if (desc)
>>>> -                       free(desc);
>>>> -               if (tcpopts)
>>>> -                       free(tcpopts);
>>>> +               free(class);
>>>> +               free(version);
>>>> +               free(subtype);
>>>> +               free(desc);
>>>> +               free(tcpopts);
>>>>                 class = version = subtype = desc = tcpopts = NULL;
>>>>                 memset(&fp, 0, sizeof(fp));
>>>>
>>>> @@ -250,16 +245,11 @@
>>>>                 add_fingerprint(dev, opts, &fp);
>>>>         }
>>>>
>>>> -       if (class)
>>>> -               free(class);
>>>> -       if (version)
>>>> -               free(version);
>>>> -       if (subtype)
>>>> -               free(subtype);
>>>> -       if (desc)
>>>> -               free(desc);
>>>> -       if (tcpopts)
>>>> -               free(tcpopts);
>>>> +       free(class);
>>>> +       free(version);
>>>> +       free(subtype);
>>>> +       free(desc);
>>>> +       free(tcpopts);
>>>>
>>>>         fclose(in);
>>>>
>>>> @@ -513,7 +503,7 @@
>>>>         return (buf);
>>>>
>>>>  found:
>>>> -       snprintf(buf, len, "%s", class_name);
>>>> +       strlcpy(buf, class_name, len);
>>>>         if (version_name) {
>>>>                 strlcat(buf, " ", len);
>>>>                 strlcat(buf, version_name, len);
>>>> Index: pfctl_radix.c
>>>> ===================================================================
>>>> RCS file: /cvs/src/sbin/pfctl/pfctl_radix.c,v
>>>> retrieving revision 1.29
>>>> diff -u -r1.29 pfctl_radix.c
>>>> --- pfctl_radix.c       27 Jul 2011 00:26:10 -0000      1.29
>>>> +++ pfctl_radix.c       22 Dec 2012 07:08:28 -0000
>>>> @@ -499,8 +499,7 @@
>>>>  {
>>>>         if (b == NULL)
>>>>                 return;
>>>> -       if (b->pfrb_caddr != NULL)
>>>> -               free(b->pfrb_caddr);
>>>> +       free(b->pfrb_caddr);
>>>>         b->pfrb_caddr = NULL;
>>>>         b->pfrb_size = b->pfrb_msize = 0;
>>>>  }
>>>>
>>>
>>>
>>>
>>> --
>>> Aaron Mason - Programmer, open source addict
>>> I've taken my software vows - for beta or for worse
>>
>>
>>
>> -- 
>> Aaron Mason - Programmer, open source addict
>> I've taken my software vows - for beta or for worse

Reply via email to