Skip to content
Snippets Groups Projects
  • Nat Goodspeed's avatar
    eb1bea22
    IQA-463: LLError::addRecorder() claims ownership of passed Recorder*. · eb1bea22
    Nat Goodspeed authored
    That is, when the underlying LLError::Settings object is destroyed -- possibly
    at termination, possibly on LLError::restoreSettings() -- the passed Recorder*
    is deleted.
    There was much existing code that seemed as unaware of this alarming fact as I
    was myself. Passing to addRecorder() a pointer to a stack object, or to a
    member of some other object, is just Bad. It might be preferable to make
    addRecorder() accept std::auto_ptr<Recorder> to make the ownership transfer
    more explicit -- or even boost::shared_ptr<Recorder> instead, which would
    allow the caller to either forget or retain the passed Recorder.
    This preliminary pass retains the Recorder* dumb pointer API, but documents
    the ownership issue, and eliminates known instances of passing pointers to
    anything but a standalone heap Recorder subclass object.
    eb1bea22
    History
    IQA-463: LLError::addRecorder() claims ownership of passed Recorder*.
    Nat Goodspeed authored
    That is, when the underlying LLError::Settings object is destroyed -- possibly
    at termination, possibly on LLError::restoreSettings() -- the passed Recorder*
    is deleted.
    There was much existing code that seemed as unaware of this alarming fact as I
    was myself. Passing to addRecorder() a pointer to a stack object, or to a
    member of some other object, is just Bad. It might be preferable to make
    addRecorder() accept std::auto_ptr<Recorder> to make the ownership transfer
    more explicit -- or even boost::shared_ptr<Recorder> instead, which would
    allow the caller to either forget or retain the passed Recorder.
    This preliminary pass retains the Recorder* dumb pointer API, but documents
    the ownership issue, and eliminates known instances of passing pointers to
    anything but a standalone heap Recorder subclass object.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.