Subject : Help regarding Bug 90341 - Clean up excessive const_cast'ing
Siddharth Khattar
skhattar111 at gmail.com
Wed Nov 23 11:37:25 UTC 2022
Hello all,
So I was aiming to do a medium difficulty level easy hack and came
across this one (Bug 90341) which interested me. I then studied what
const_cast does and what was the main issue that this bug was
addressing. As I looked into it more and ran the command " git grep
--word-regexp --count const_cast | sort --numeric-sort --key=2
--field-separator=: ", I got various results and decided to look into
core/xmloff/source/style/impastpl.cxx (lines 144 & 146).
I also decided to go through the previous commits made in the bug
thread for ideas and help, such as these:
https://git.libreoffice.org/core/+/7b152167a4e4c3eaac95aee8f282873681c90092%5E%21
and https://cgit.freedesktop.org/libreoffice/core/commit/?id=4ae319ae462f3f094452046e392c8c15446736ae.
I then decided to experiment with the file (impastpl.cxx) and then
removed const & const_cast from the above-mentioned lines. Then, when
I tried to build from source I got these errors (please see attached
text file).
I wasn't sure what to make of these errors as nothing helpful came
when I googled them & I also am not heavily experienced in c++ coding.
Then I started reading some documentation of the xmloff file to come
to understand that these files were related to outputting "basic ODF
import/export filter implementation for most applications".
One of the people at LibreOffice (buovjaga) also helped me with this
and pointed out that the any2string function in that file appeared in:
https://git.libreoffice.org/core/commit/c1015fdd51909495cefdc0258c3899cd73d4d2df.
I pondered about contacting the original contributor who pushed this
commit for help but as the commit was 9+ years old I dropped that idea
pretty quickly
I'd really appreciate it if the dev team could help me in any way with
this easy hack and tell me in which direction I should go!
Thanking you for your time,
Siddharth Khattar
-------------- next part --------------
/home/siddharth/Desktop/core/xmloff/source/style/impastpl.cxx: In function ‘rtl::OUString any2string(com::sun::star::uno::Any&)’:
/home/siddharth/Desktop/core/xmloff/source/style/impastpl.cxx:146:36: error: invalid conversion from ‘const void*’ to ‘void*’ [-fpermissive]
146 | return data2string(any.getValue(), any.pType);
| ~~~~~~~~~~~~^~
| |
| const void*
/home/siddharth/Desktop/core/xmloff/source/style/impastpl.cxx:97:19: note: initializing argument 1 of ‘rtl::OUString data2string(void*, const typelib_TypeDescriptionReference*)’
97 | data2string(void *data,
| ~~~~~~^~~~
/home/siddharth/Desktop/core/xmloff/source/style/impastpl.cxx: In constructor ‘XMLAutoStylePoolProperties::XMLAutoStylePoolProperties(XMLAutoStyleFamily&, std::vector<XMLPropertyState>&&, const rtl::OUString&)’:
/home/siddharth/Desktop/core/xmloff/source/style/impastpl.cxx:182:50: error: binding reference of type ‘com::sun::star::uno::Any&’ to ‘const com::sun::star::uno::Any’ discards qualifiers
182 | aStemBuffer.append(any2string(rState.maValue));
| ~~~~~~~^~~~~~~
/home/siddharth/Desktop/core/xmloff/source/style/impastpl.cxx:144:38: note: initializing argument 1 of ‘rtl::OUString any2string(com::sun::star::uno::Any&)’
144 | static OUString any2string(uno::Any& any)
| ~~~~~~~~~~^~~
/home/siddharth/Desktop/core/xmloff/source/style/impastpl.cxx: At global scope:
/home/siddharth/Desktop/core/xmloff/source/style/impastpl.cxx:144:17: warning: ‘rtl::OUString any2string(com::sun::star::uno::Any&)’ defined but not used [-Wunused-function]
144 | static OUString any2string(uno::Any& any)
| ^~~~~~~~~~
make[1]: *** [/home/siddharth/Desktop/core/solenv/gbuild/LinkTarget.mk:337: /home/siddharth/Desktop/core/workdir/CxxObject/xmloff/source/style/impastpl.o] Error 1
make[1]: *** Waiting for unfinished jobs....
make: *** [Makefile:289: build] Error 2
More information about the LibreOffice
mailing list