Date: prev next · Thread: first prev next last
2011 Archives by date, by thread · List index


I pushed the proposed changes as <http://cgit.freedesktop.org/libreoffice/core/commit/?id=70a6b9ffbd676a1384433a86205d2cd4f2d4f4b1> and <http://cgit.freedesktop.org/libreoffice/binfilter/commit/?id=d45d5ee81e3d3f1779774af3f400ce3f1aa6697d>. Any further refinements (where to send the log output, performance considerations) can carry on from there.

I added a short summary as <https://wiki.documentfoundation.org/Development#Assertions_and_Logging>; feel free to expand. I also filed easy hack <https://bugs.freedesktop.org/show_bug.cgi?id=43157> "Clean up OSL_ASSERT, DBG_ASSERT, etc." As already discussed, if any uses of the obsolete functionality still remains after a while, I would initiate a mass-conversion OSL_ASSERT->SAL_WARN, OSL_TRACE->SAL_INFO, etc.

I made a few further changes to the proposed patches when I pushed them:

- DBG_ASSERT etc. from tools/debug.hxx still are only enabled depending on DBG_UTIL. Trying an --enable-debug --disable-dbgutil build, it broke at many places that #ifdef DBG_UTIL some code that is later used within a DBG_ASSERT (e.g., an additional variable capturing some old value, modified later and checked afterwards, or a function parameter name that is only used within a DBG_ASSERT). This is a lot of work to clean up (see the easy hack above).

- I replaced the single SAL_LOG_LEVEL (with values 0, 1, 2) with individual defines SAL_LOG_INFO and SAL_LOG_WARN. This makes it easier to replace the code mentioned above, going from

  #ifdef DBG_UTIL
    int old = x;
  #endif
    ... // modify x
    DBG_ASSERT(x > old);

to

  #if defined SAL_LOG_WARN // instead of: SAL_LOG_LEVEL >= 1
    int old = x;
  #endif
    .. // modify x
    SAL_WARN_IF(x <= old, "...");

(Where for such a cheap initialization like "int old = x;" it would also work to have that variable included unconditionally, followed by a "(void) old; // avoid warnings"; but there are also cases of more expensive initialization, that you would likely want to keep excluded from production builds.)

- The SAL_INFO/WARN messages are now defined to be always UTF-8, and rtl/oustringostreaminserter.hxx always converts to UTF-8. That minimizes information loss and would potentially enable use of SAL_STREAM for construction of UNO exception messages, see the recent thread about that. However, I do not bother to convert the data output to stderr from UTF-8 to any other encoding.

Stephan

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.