|
Tom Lane |
at Mar 4, 2011 at 3:21 pm
|
⇧ |
| |
Peter Geoghegan writes:
On 4 March 2011 14:50, Robert Haas wrote:
I think that free(NULL) works on some platforms but not all. I don't
see what advantage we'd get out of making pfree(NULL) silently work,
and there's a clear disadvantage: it would remove a useful sanity
check.
I don't feel particularly strongly about what pfree() should do one
way or the other, but that isn't so; free(NULL) works on all
platforms, and is required to by the standard.
For the last few years it's been pretty safe to assume that, but it did
not use to be so --- pre ISO C spec, some malloc libraries allowed
free(NULL) and some didn't.
In any case, this has been debated before and the project policy is
that having pfree(NULL) throw an error is a net benefit. The main case
where it's really useful to not throw an error is where malloc(0)
returns NULL rather than a valid pointer (and BTW, both of those
behaviors are allowed by spec). However, palloc(0) is guaranteed
to give you a valid pointer that you can pfree, so that argument
doesn't hold here.
regards, tom lane