From: Dmitry V. L. <ld...@al...> - 2009-10-08 00:23:35
|
On Wed, Oct 07, 2009 at 07:48:50PM -0400, Mike Frysinger wrote: > On Wednesday 07 October 2009 19:32:39 Dmitry V. Levin wrote: > > On Wed, Oct 07, 2009 at 05:25:01AM -0400, Mike Frysinger wrote: > > > When getdents finishes processing, it returns 0. Strace uses this to > > > then try and do malloc(0), but on some systems this will always return > > > NULL. Since the code won't read the pointer in question if len is 0, then > > > don't abort on the malloc(0) == NULL case. > > > > When len == 0, the buffer allocated by malloc(0) is not used anyway, so > > there are no need to malloc(0) here even on regular systems where > > malloc(0) allocates memory, right? > > yes, this is true. it would be nice to write it like: > if (len && (buf = malloc(len)) == NULL) { > but then gcc whines that buf might be used uninitialized, which is why i wrote > it the way i did (less code change that way). > > it could be written like so: > buf = len ? malloc(len) : NULL; > if (len && !buf) { OK, let's change it this way. -- ldv |