[Libreoffice] fighting with debug macros...

Pierre-André Jacquod pjacquod at alumni.ethz.ch
Wed Dec 8 06:34:50 PST 2010


Hello,

still trying to learn a bit the code. Compiling without DEBUG on gives
some new warnings:- ) This lead me to look at some code construct. Here
is in pseudo-code a typical construct I am crossing:

var y = ....;
var x = ....;
code
if ( y > MAXVALUE)
{
    ASSERT(x, "out of range"); // only use of var x is here
} // there is no else statement
code

Looking at easy hacks, I also saw that ASSERT is deprecated. I have
looked at the OSL macros, but did not found an equivalent of
ASSERT(condition, message) (defined in
filters/binfilter/inc/bf_sw/errhdl.hxx

But further, this is not very useful for the end-user, since LibO is
shipped without debug-level on. (right? )

So I was thinking:
* either a macro exists to do a "hello user, I will crash. Thanks to
send this report", that is added within the if statement.  ??

* or to change the code to something like:
var y = ...;
#if OSL_DEBUG_LEVEL > 0
var x = ...; /* if this is not possible to insert x below, and the
                initialization of x does not change any state */
#endif

code
#if OSL_DEBUG_LEVEL > 0
    if ( y > MAXVALUE)
    {
        ASSERT(x, "txt"); // only use of var x is here
    } // there is no else statement
#endif
code

to avoid shipping unneeded code to end-user. This will also make code
execution more efficient, avoiding dummy branches.

By the way:
what is the right way to achieve the goal of the easy hack : align
ASSERT (& friends) macro foo ?

include /ure/sal/inc/osl/diagnose.h in file, and use only OSL_Debug
macros loosing all messages? Is it possible to add an additional
OSL_ASSERT(condition, message) macro? Or not wanted?

Thanks for your inputs.
regards



More information about the LibreOffice mailing list