Hi guys,
I had to convert a QString to a char* string a few days ago, and after
looking it up, I realized that it's not terribly obvious how to do it
properly, and it's very easy to do it incorrectly.
Correct way:
QByteArray ba = your_qstring.toLatin1();
const char *c_str = ba.data();
Incorrect way:
const char* c_str = your_qstring.toLatin1().data();
In the incorrect way, the QByteArray hasn't been stored and no longer
exists after the .toLatin1() call (your c_str pointer is bad).
See:
http://trolltech.com/developer/knowledgebase/faq.2007-01-30.9032238253/
I grepped through the code and found some suspicious usage:
$ grep "\.data" src/*.cpp
src/configobject.cpp: cm_writemsg_utf8(5, strconf.toUtf8().data());
src/herculeslinuxlegacy.cpp: qDebug(" %d. kqHerculesValidPrefix[i] =
[%s]",i, kqHerculesValidPrefix[i].data());
src/xmlparse.cpp: s = node2.toCDATASection().data();
src/xmlparse.cpp: s = node2.toCDATASection().data();
Super easy mistake to make, so just keep an eye out for this sort of
thing. I've committed fixes for the above, so hopefully that'll fix the
odd quirk.
Thanks,
Albert
-------------------------------------------------------------------------
This SF.net email is sponsored by: Microsoft
Defy all challenges. Microsoft(R) Visual Studio 2008.
http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/
_______________________________________________
Mixxx-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/mixxx-devel