Subject: Re: CVS commit: src/sys/lib/libkern
To: None <joerg@britannica.bec.de>
From: YAMAMOTO Takashi <yamt@mwd.biglobe.ne.jp>
List: source-changes
Date: 11/22/2007 20:15:36
> On Thu, Nov 22, 2007 at 12:15:47PM +0900, YAMAMOTO Takashi wrote:
> > > On Thu, Nov 22, 2007 at 11:31:44AM +0900, YAMAMOTO Takashi wrote:
> > > > how about returning the duplicate node rather than a boolean?
> > > 
> > > I don't think that is a common use case. E.g. normally insert is used to
> > > prepare a new node and a duplicate entry is an actual error. I can't
> > > think of a good example where you want to replace the existing entry and
> > > didn't check for that earlier.
> > > 
> > > Joerg
> > 
> > i'm not suggesting to automatically replace an existing node.
> 
> No, but for what other reason should it return a pointer to the existing
> node?
> 
> Joerg

i think a pointer is better because:
- a caller might want to investigate a duplicate entry.
  for example, lockdebug_alloc dumps a duplicate entry.
  i don't know if it's common or rare, but the cost to return a pointer
  is negligible.
- a pointer can be trivially converted to a boolean if you want, while
  the opposite requires relookup.
- i keep to forget which of true or false is an error.  :)

can you explain why you think a boolean is better?

YAMAMOTO Takashi