[FFmpeg-cvslog] Make av_realloc(0) behave like our av_malloc(0)

Michael Niedermayer michaelni at gmx.at
Sun May 8 01:55:27 CEST 2011


On Sat, May 07, 2011 at 04:46:34PM -0700, Daniel Verkamp wrote:
> On Sat, May 7, 2011 at 4:36 PM, Michael Niedermayer <michaelni at gmx.at> wrote:
> > On Sat, May 07, 2011 at 11:31:11AM -0700, Daniel Verkamp wrote:
> >> On Sat, May 7, 2011 at 7:54 AM, Reimar Döffinger
> >> <Reimar.Doeffinger at gmx.de> wrote:
> >> >
> >> >
> >> > On 7 May 2011, at 16:23, git at videolan.org (Michael Niedermayer) wrote:
> >> >
> >> >> ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat May  7 15:28:07 2011 +0200| [91ff05f6ac5c65a6cd3701d5a7cdcfb6ccfd87e4] | committer: Michael Niedermayer
> >> >>
> >> >> Make av_realloc(0) behave like our av_malloc(0)
> >> >> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> >> >>
> >> >>> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=91ff05f6ac5c65a6cd3701d5a7cdcfb6ccfd87e4
> >> >> ---
> >> >>
> >> >> libavutil/mem.c |    2 +-
> >> >> 1 files changed, 1 insertions(+), 1 deletions(-)
> >> >>
> >> >> diff --git a/libavutil/mem.c b/libavutil/mem.c
> >> >> index 965daa9..83e8c35 100644
> >> >> --- a/libavutil/mem.c
> >> >> +++ b/libavutil/mem.c
> >> >> @@ -132,7 +132,7 @@ void *av_realloc(void *ptr, size_t size)
> >> >>     diff= ((char*)ptr)[-1];
> >> >>     return (char*)realloc((char*)ptr - diff, size + diff) + diff;
> >> >> #else
> >> >> -    return realloc(ptr, size);
> >> >> +    return realloc(ptr, size + !size);
> >> >> #endif
> >> >
> >> > Not sure if it's such a great idea, but I think you could
> >> > use exactly the same code as in av_malloc to avoid doing
> >> > something when not necessary.
> >>
> >> Isn't realloc(ptr, 0) supposed to be free(ptr), or does that not apply
> >> to av_realloc?
> >
> > I thought so too but couldnt find that requirement in the C spec
> > The spec says NULL, X should behave like malloc
> >
> 
> My reference was SUS:
> http://pubs.opengroup.org/onlinepubs/007908799/xsh/realloc.html

"If size is 0, either a null pointer or a unique pointer that can be successfully passed to free() is returned."

So i think we are compatible to SUS

[...]
-- 
Michael     GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB

Its not that you shouldnt use gotos but rather that you should write
readable code and code with gotos often but not always is less readable
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-cvslog/attachments/20110508/610d51e0/attachment.asc>


More information about the ffmpeg-cvslog mailing list