Noel,
I am sorry for a long response to an innocent-looking
message, but "a man's gotta do what a man's gotta do".
On Fri, 2011-10-28 at 10:42 +0100, Noel Power wrote:
On 28/10/11 10:18, Noel Power wrote:
just fyi, I did an additional commit to do a minor tweak changing the
OSL_TRACE messages into OSL_ENSURE messages. Nothing wrong with the
OSL_TRACE, just the OSL_ENSURE does some of the hard work for you (
linenumber & file ) hope I got the logic correct
Yes, the logic looks right to me, as well as being fewer
lines. Moreover, OSL_ENSURE is effective from dbglevel=1
(and hence is built with ordinary configuration option
--enable-dbgutil), while OSL_TRACE requires at least
dbglevel=2. All this, I think, favours OSL_ENSURE.
But, on the other hand, ...
On Mon, 2011-10-24 at 23:18 +0200, Stephan Bergmann wrote:
On 10/24/2011 05:59 PM, Terrence Enger wrote:
I shall proceed with that. And, unless somebody tells me otherwise, I
shall indulge myself with OSL_ENSURE() on the return values.
Note that OSL_ENSURE, OSL_ASSERT, and OSL_FAIL should only be used for
logic errors (i.e., the program detects that it contains an error and
ends up in a state that "cannot happen"), not for uncommon situations
that nevertheless should be handled, like IO errors or malformed user
input. OSL_TRACE, on the other hand, is the tool of choice to document
"interesting" events during program execution (which is only evaluated
when built with DEBUG=TRUE, however). -- Even if lots of places in the
code base misuse the former for the latter. Ideally, OSL_ENSURE et al.
should directly abort program execution, but we're not there, yet.
As it happens, the leak was indeed the result of a program
error: the program was not calling SQLDisconnect. But the
ODBC functions represent the whole rest of the world to LO,
and that gives the functions lots of room to go wrong
without implicating LO itself. Hence my choice of
OSL_TRACE.
I have not addressed "nevertheless should be handled" from
S.B.'s comment: I do not know how to recover from a failed
function call. OTOH, the leaked handle was evident only
because I happend to be watching drive statistics; later I
noticed failure code 'HY010' in the ODBC trace file.
What do you think?
With thanks for your attention and encouragement,
Terry.
Context
Privacy Policy |
Impressum (Legal Info) |
Copyright information: Unless otherwise specified, all text and images
on this website are licensed under the
Creative Commons Attribution-Share Alike 3.0 License.
This does not include the source code of LibreOffice, which is
licensed under the Mozilla Public License (
MPLv2).
"LibreOffice" and "The Document Foundation" are
registered trademarks of their corresponding registered owners or are
in actual use as trademarks in one or more countries. Their respective
logos and icons are also subject to international copyright laws. Use
thereof is explained in our
trademark policy.