Commit 6481e28b authored by Kai Koehne's avatar Kai Koehne Committed by The Qt Project
Browse files

Fix crashes in QtHelp when too many connections are made


Fixes a crash when Qt Creator was registering a large number of .qch
files on first startup: In this case the limit of 1000 connections
within one session will overflow, resulting in conflicting connection
names and crashes later on.

Remove this limitation by keeping separate counters per connection name,
and also not wrapping around after 1000.

It's not clear where the 1000 connection limit stems from: The offending
lines predate the first git import of Qt 4.

Task-number: QTBUG-36480
Change-Id: If00276652644efa854a75407d00ba01069bde02a
Reviewed-by: default avatarKarsten Heimrich <karsten.heimrich@digia.com>
No related merge requests found
Showing with 3 additions and 5 deletions
...@@ -48,15 +48,13 @@ ...@@ -48,15 +48,13 @@
QString QHelpGlobal::uniquifyConnectionName(const QString &name, void *pointer) QString QHelpGlobal::uniquifyConnectionName(const QString &name, void *pointer)
{ {
static int counter = 0;
static QMutex mutex; static QMutex mutex;
QMutexLocker locker(&mutex); QMutexLocker locker(&mutex);
if (++counter > 1000)
counter = 0; static QHash<QString,quint16> idHash;
return QString::fromLatin1("%1-%2-%3"). return QString::fromLatin1("%1-%2-%3").
arg(name).arg(quintptr(pointer)).arg(counter); arg(name).arg(quintptr(pointer)).arg(++idHash[name]);
} }
QString QHelpGlobal::documentTitle(const QString &content) QString QHelpGlobal::documentTitle(const QString &content)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment