[Ffmpeg-devel] [PATCH] avoid useless memcpy with src==dst (valgrind complains)
Rich Felker
dalias
Sun Jul 23 20:11:47 CEST 2006
On Sun, Jul 23, 2006 at 05:35:59PM +0200, Reimar D?ffinger wrote:
> Hello,
> On Sun, Jul 23, 2006 at 02:24:17PM -0000, Wolfram Gloger wrote:
> > > Though for src == dst I doubt any memcpy function will break
> > > stuff. And for the overlapping case when src != dst does the C standard
> > > specify the behaviour?
> >
> > Using memcpy() on overlapping objects is undefined behaviour
> > (7.21.2.1#2).
>
> Which part were you replying to? If to the first: memcpy may strictly
> speaking have undefined behaviour for src == dst, but I very much doubt
> it has in reality.
> If to the second part: I meant if you have two "struct something"
> pointers a and b, is the behaviour of *a = *b defined when the areas for
> *a and *b overlap?
That's an interesting question. *a = *b may be undefined when a and b
both point to the same object; I'm not sure. Anyone care to dig up
this info?
> objdump -S on utils.o gives me:
> [...]
> temp= *buf;
> 18a: ba 58 00 00 00 mov $0x58,%edx
> 18f: 48 89 ee mov %rbp,%rsi
> 192: 48 89 e7 mov %rsp,%rdi
> 195: e8 00 00 00 00 callq 19a <avcodec_default_release_buffer+0x7a>
> *buf= *last;
> 19a: ba 58 00 00 00 mov $0x58,%edx
> 19f: 4c 89 e6 mov %r12,%rsi
> [...]
>
> so there definitly is some placeholder for some call...
Use the -r or -R option to see the relocation information; then you
should see where the call goes.
Rich
More information about the ffmpeg-devel
mailing list