On 7/12/07, Scott McKellar <[EMAIL PROTECTED]> wrote:
This patch contains one minor change and one less minor change.


[snip less minor change]


The minor change is that, after building an array of pointers
pointing to tokens from the input command, I set the next
pointer to NULL so that it mark the end of the token list.

For most systems most of the time, this change will make no
difference, because a preceding memset() writes a bunch of binary
zeros to the pointer array.  However not all systems represent
NULL as all-bits-zero.

There is a further subtlety: the memset() doesn't fill the entire
array.  It fills a number of bytes equal to the number of pointers
in the array.  However a pointer occupies more than one byte (with
rare exceptions).  The result is that, on a system with four-byte
pointers, only one fourth of the pointers get nullified.

This is, in fact, the problem.  I've fixed it by using calloc()/free()
instead of using an array.  calloc() has the extra benefit of zeroing
the memory, so the first memset() is no longer needed.  I left the
NULLification of the last + 1 pointer in place for systems where NULL
!= all-0-bits.

Thanks again, Scott!

--miker

Reply via email to