[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: An optimization for another day (and developer)

> BTW, one optimization I intended to implement but haven't
> the time is to allow:
> 	struct berval bv = { 0, NULL }
> 	struct berval *bvp = &bv;
> 	rc = dnPretty( NULL, &dn, &bvp );
> 	rc = dnNormalize( NULL, &dn, &bvp );
> That is, allow call to provide, optionally, a
> pre-allocated struct berval instead of relying
> on the caller to malloc on up.  Of course, in
> some cases, the existing behavior is preferred.

I note that relying on developers (I speak mostly of myself :)
to supply a NULL pointer if alloc is required or non-NULL pointer
if it can be safely used is dangerous: no more than five minutes
ago I fixed this bug in back-monitor.  I'd rather use a alloc/use
flag in an ancillary function, or radically change the API
to accept only pre-allocated structs, which wouldn't be a big issue 
since the big allocation takes place for the bv_val, not for the 
struct berval.

Of course, by using appropriate safety checks and tools your
suggestion would provide an interesting optimization.