Unexpected usage of 'duplicate' flag in sapi_add_header_ex()

php.internals

js

19 years ago
Hi gurus. Fiddling with PHP extensions I found the following code in 'sapi_add_header_ex()' in SAPI.c if (!duplicate) efree(header_line); which makes me wonder because the other day I read CODING_STANDARD included in PHP src which says "[1] Functions that are given pointers to resources should not free them *snip* Exceptions: - The function's designated behavior is freeing that resource. E.g. efree() - The function is given a boolean argument, that controls whether or not the function may free its arguments (if true - the function must free its arguments, if false - it must not) *snip* " I felt the rule above is incompatible with how efree and duplicate flag is used in sapi_add_header_ex(). So my question is... Is this intentional? If so, any reason to break the coding standard in this instance? and what does, in this context, 'duplicate' means? Thanks you in advance.

Antony Dovgal

19 years ago
On 04/03/2007 07:26 PM, js wrote:
> Hi gurus. > > Fiddling with PHP extensions I found the following code in > 'sapi_add_header_ex()' in SAPI.c > > if (!duplicate) > efree(header_line); > > which makes me wonder because the other day I read CODING_STANDARD > included in PHP src which says > > "[1] Functions that are given pointers to resources should not free them > *snip* > Exceptions: > - The function's designated behavior is freeing that resource. E.g. efree() > - The function is given a boolean argument, that controls whether or not > the function may free its arguments (if true - the function must free its > arguments, if false - it must not) > *snip* > " > I felt the rule above is incompatible with how efree and duplicate > flag is used in > sapi_add_header_ex(). > > So my question is... > Is this intentional?
Apparently yes.
> If so, any reason to break the coding standard in this instance?
Standards are general rules, there might be some exceptions. (It doesn't mean I personally like this code or encourage to ignore the standards).
> and what does, in this context, 'duplicate' means?
See main/main.c, line 1119 for example. It might be convenient to free duplicated buffer and ignore static one.
-- Wbr, Antony Dovgal

js

19 years ago
Hi Antony. Thanks you for replying.
> > If so, any reason to break the coding standard in this instance? > > Standards are general rules, there might be some exceptions. > (It doesn't mean I personally like this code or encourage to ignore the standards). > > > and what does, in this context, 'duplicate' means? > > See main/main.c, line 1119 for example. > It might be convenient to free duplicated buffer and ignore static one.
Then wouldn't it be nice call that flag static or no_duplicate or something? I thought 'duplicate' is misleading name.

Antony Dovgal

19 years ago
On 04/04/2007 03:18 AM, js wrote:
> Hi Antony. > > Thanks you for replying. > >> > If so, any reason to break the coding standard in this instance? >> >> Standards are general rules, there might be some exceptions. >> (It doesn't mean I personally like this code or encourage to ignore the standards). >> >> > and what does, in this context, 'duplicate' means? >> >> See main/main.c, line 1119 for example. >> It might be convenient to free duplicated buffer and ignore static one. > > Then wouldn't it be nice call that flag static or no_duplicate or something? > I thought 'duplicate' is misleading name.
Don't fix something that isn't broken. There are a lot of places requiring attention, this is not one of them.
-- Wbr, Antony Dovgal