Find out interesting bug: when I pass const QString&
parameter and then get const char*
pointer to data that stored within const QString&
, pointer points to bad data (some characters that not seemed as I send to function).
LogbookNote LBHasher::makePropsFromPseudoElement(const QString& id)
{
LogbookNote rv;
if (m_ctx->currentTrim) {
const char* charId = id.toLatin1().data();
...
qDebug() << charId;
}
And calling code:
LogbookNote LBHasher::makePropsByNameConvention(QString id)
{
LogbookNote g;
if (id.startsWith("_ctx_")) {
g = makePropsFromPseudoElement(id);
...
}
As you can mention, to calling method id comes as QString
, i.e. whole copy of QString
object. And thus const QString&
can be a strong (not broken, to deleted temporary object, for example) reference.
Why such behavior occurred?
Aucun commentaire:
Enregistrer un commentaire