From b6f9b4da116339be33dd3829e7ed754045710296 Mon Sep 17 00:00:00 2001 From: Antonio Larrosa Date: Thu, 13 Jun 2013 01:49:19 +0200 Subject: [PATCH] Fix a reference to deleted memory, since QString::toLatin1().data() is a dangling pointer to the data of a temporary object which was already deleted. --- qtmmlwidget/qtmmlwidget.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/qtmmlwidget/qtmmlwidget.cpp b/qtmmlwidget/qtmmlwidget.cpp index d97117e..7469708 100644 --- a/qtmmlwidget/qtmmlwidget.cpp +++ b/qtmmlwidget/qtmmlwidget.cpp @@ -5863,7 +5863,8 @@ const OperSpec *&OperSpecSearchResult::getForm(Mml::FormType f) */ static const OperSpec *searchOperSpecData(const QString &name) { - const char *name_latin1 = name.toLatin1().data(); + QByteArray name_latin1_array = name.toLatin1(); + const char *name_latin1 = name_latin1_array.data(); // binary search // establish invariant g_oper_spec_data[begin].name < name < g_oper_spec_data[end].name @@ -5913,7 +5914,8 @@ static OperSpecSearchResult _mmlFindOperSpec(const QStringList &name_list, Mml:: if (spec == 0) continue; - const char *name_latin1 = name.toLatin1().data(); + QByteArray name_latin1_array = name.toLatin1(); + const char *name_latin1 = name_latin1_array.data(); // backtrack to the first instance of name while (spec > g_oper_spec_data && qstrcmp((spec - 1)->name, name_latin1) == 0) -- 2.47.3