List:MySQL++« Previous MessageNext Message »
From:Warren Young Date:November 2 2005 7:21pm
Subject:Re: mysql++ connection/resuse destructor bug
View as plain text  
David Wojtowicz wrote:
> 
>  I guess my main point was that it is too easy to create code that looks
> perfectly valid (like my example), but had unintended side effects, due to
> the hidden nature of destructors being called as objects go out of scope.

Some of this is a documentation problem.  Up to now, we've been 
depending on the existence of the examples to cover this.  That is, do 
things like the examples, and you'll be fine.  These issues should be 
explicitly covered in the user manual.

> I don't know if the C++ standard prescribes the order in which destructors
> must be called 

You can get a PDF copy of the standard for only $18 here: 
http://webstore.ansi.org/  No excuses now.  :)

>  1) If ResUse::~ResUse() didn't need to call conn_->unlock(), the problem
> would be solved.

I'll be shipping v2.0.7 in the forseeably near future, and it will have 
Chris's patch for this in it.  I'm not certain that this is a completely 
correct fix, but it's certainly part of a correct fix.

>  2) Make the default ctors for ResUse and Result private

Hmmm, maybe.  This would have to wait for v3.0.

> 3) Add a note to the docs, warning about deleting Connection before things
> that depend on it go out of scope.

I had in mind a much more extensive discussion.  The dependencies are 
more complex than that.

> Thanks for listening.

Thanks for complaining constructively.  :)
Thread
mysql++ connection/resuse destructor bugDavid Wojtowicz1 Nov
  • Re: mysql++ connection/resuse destructor bugChris Frey1 Nov
    • RE: mysql++ connection/resuse destructor bugDavid Wojtowicz2 Nov
      • Re: mysql++ connection/resuse destructor bugChris Frey2 Nov
      • Re: mysql++ connection/resuse destructor bugChris Frey2 Nov
        • Re: mysql++ connection/resuse destructor bugWarren Young2 Nov
      • Re: mysql++ connection/resuse destructor bugWarren Young2 Nov