On 9/30/07, Dan Scott <[EMAIL PROTECTED]> wrote: > On 30/09/2007, David J. Fiander <[EMAIL PROTECTED]> wrote: > > > > > > First, I wouldn't initialize the buffer with nuls. I'd initialize it > > > with (for example) exclamation points, with perhaps a nul at the end. > > > That way if a wayward pointer gives us a string of exclamation points, > > > we'll have a better chance of recognizing the problem. A string of > > > nuls is neither distinctive nor informative. > > > > > > > I agree. A long time ago I used to use a debugging malloc library > > that filled the buffers returned with '\001' bytes. It's amazing how > > many bugs one finds that way. > > > > Also agreed here - debug builds of a commercial product I worked on > used the same approach, and it did turn up lots of uglies in unit > tests that had been hidden by nul initialization. >
I agree with all of this as well. As a beginning, I have applied Dan's patches that remove memset where it's clearly superfluous and use it in preference to bzero when pre-filling is the current mechanism for avoiding garbage in a new buffer. That's just the first step, of course, in a full-blown memory management audit. Or maybe just a step before we can think about that ... I'm going to work up a patch that implements Scott's suggested buffer misuse detector and replaces all memsets with that. Any objections/suggestions? -- Mike Rylander | VP, Research and Design | Equinox Software, Inc. / The Evergreen Experts | phone: 1-877-OPEN-ILS (673-6457) | email: [EMAIL PROTECTED] | web: http://www.esilibrary.com