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
_______________________________________________
LibreOffice mailing list
LibreOffice@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice

Reply via email to