[FFmpeg-devel] x11grab.c: minor clean up, added more documentation
Sven C. Dack
sven.c.dack at virginmedia.com
Fri Apr 1 19:52:45 CEST 2011
On 01/04/11 16:56, Carl Eugen Hoyos wrote:
> dpy = XOpenDisplay(param);
> + av_free(param);
> if(!dpy) {
> av_log(s1, AV_LOG_ERROR, "Could not open X display.\n");
> return AVERROR(EIO);
>
> I have no idea if it is correct, but it fixed the memleak for me (and does not
> crash here).
> Is it wrong?
>
Yes. The way you have done it (with av_free() directly after
XOpenDisplay()) expects that the memory never gets touched after the
call to XOpenDisplay(). You cannot rely on such a behaviour without
knowing the exact implementation details of all the X11 libraries on
every available platform.
For example, it is likely dpy->display_name points to this memory area.
It does not have to and may contain a copy of it, but if it does then
its content can become invalid. Any code relying on a valid
dpy->display_name can break.
It is better to respect the API by passing it a writeable string
(because it expects a char*) and then to preserve the memory until the
display is closed again.
Sven
PS: Feel free to take my patch and merge it with your own code.
> Carl Eugen
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
>
More information about the ffmpeg-devel
mailing list