I see. There are clues in dir(5) actually, so perhaps a note in scandir(3) is vacuous. On Jan 19, 2012 6:59 PM, "Joerg Sonnenberger" <[email protected]> wrote:
> On Thu, Jan 19, 2012 at 06:32:45PM +0000, Edd Barrett wrote: > > On Thu, Jan 19, 2012 at 10:17:02AM -0800, Philip Guenther wrote: > > > On Thu, Jan 19, 2012 at 4:18 AM, Edd Barrett <[email protected]> wrote: > > > > I recently got caught out by scandir's quirky memory allocation. > Should > > > > we add a note so that others don't have to go through this pain too? > > > > > > Could you elaborate on how this affected your code? I'm trying to > > > think of some way for code to depend on this that isn't undefined > > > behavior by the POSIX standard and (sorry) just a bad idea in > > > practice... > > > > I tried to memcpy() one of these dirents into a new buffer: > > > > memcpy(dest, src, sizeof(struct dirent)); > > > > This overran the read buffer, as most dirents allocated by scandir() are > > not this big. > > POSIX explicitly says that d_name has unspecified size. > > Joerg
