summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJason McDonald <jason.mcdonald@nokia.com>2009-08-21 19:08:03 (GMT)
committerJason McDonald <jason.mcdonald@nokia.com>2009-08-21 19:08:03 (GMT)
commit6df41be48ba960d481ec9b3d6d821d0d559f444d (patch)
treea4ab1b3b1ff68d210394bbfa57c7295bcc9153d1 /src
parent6093bac3049854ded63f74a0deac9df730f2027f (diff)
parent3a735d35eeb474ab9b12d3b97b14c4429acef919 (diff)
downloadQt-6df41be48ba960d481ec9b3d6d821d0d559f444d.zip
Qt-6df41be48ba960d481ec9b3d6d821d0d559f444d.tar.gz
Qt-6df41be48ba960d481ec9b3d6d821d0d559f444d.tar.bz2
Merge branch 'master' of git@scm.dev.nokia.troll.no:qt/qt
Diffstat (limited to 'src')
-rw-r--r--src/corelib/io/qsettings.cpp3
-rw-r--r--src/corelib/kernel/qobject.cpp32
-rw-r--r--src/corelib/tools/qlist.cpp2
-rw-r--r--src/corelib/tools/qlist.h3
4 files changed, 23 insertions, 17 deletions
diff --git a/src/corelib/io/qsettings.cpp b/src/corelib/io/qsettings.cpp
index 4c19cbf..8612e03 100644
--- a/src/corelib/io/qsettings.cpp
+++ b/src/corelib/io/qsettings.cpp
@@ -223,7 +223,8 @@ QConfFile::QConfFile(const QString &fileName, bool _userPerms)
QConfFile::~QConfFile()
{
- usedHashFunc()->remove(name);
+ if (usedHashFunc())
+ usedHashFunc()->remove(name);
}
ParsedSettingsMap QConfFile::mergedKeyMap() const
diff --git a/src/corelib/kernel/qobject.cpp b/src/corelib/kernel/qobject.cpp
index 040efc9..2117a2d 100644
--- a/src/corelib/kernel/qobject.cpp
+++ b/src/corelib/kernel/qobject.cpp
@@ -2981,12 +2981,16 @@ void QObject::disconnectNotify(const char *)
bool QMetaObject::connect(const QObject *sender, int signal_index,
const QObject *receiver, int method_index, int type, int *types)
{
- const QMetaObject *mo = sender->metaObject();
- while (mo && mo->methodOffset() > signal_index)
- mo = mo->superClass();
- int signalOffset, methodOffset;
- computeOffsets(mo, &signalOffset, &methodOffset);
- signal_index = QMetaObjectPrivate::originalClone(mo, signal_index - methodOffset) + signalOffset;
+ if (signal_index > 0) {
+ const QMetaObject *mo = sender->metaObject();
+ while (mo && mo->methodOffset() > signal_index)
+ mo = mo->superClass();
+ if (mo) {
+ int signalOffset, methodOffset;
+ computeOffsets(mo, &signalOffset, &methodOffset);
+ signal_index = QMetaObjectPrivate::originalClone(mo, signal_index - methodOffset) + signalOffset;
+ }
+ }
return QMetaObjectPrivate::connect(sender, signal_index,
receiver, method_index, type, types);
}
@@ -3059,12 +3063,16 @@ bool QMetaObjectPrivate::connect(const QObject *sender, int signal_index,
bool QMetaObject::disconnect(const QObject *sender, int signal_index,
const QObject *receiver, int method_index)
{
- const QMetaObject *mo = sender->metaObject();
- while (mo && mo->methodOffset() > signal_index)
- mo = mo->superClass();
- int signalOffset, methodOffset;
- computeOffsets(mo, &signalOffset, &methodOffset);
- signal_index = QMetaObjectPrivate::originalClone(mo, signal_index - methodOffset) + signalOffset;
+ if (signal_index > 0) {
+ const QMetaObject *mo = sender->metaObject();
+ while (mo && mo->methodOffset() > signal_index)
+ mo = mo->superClass();
+ if (mo) {
+ int signalOffset, methodOffset;
+ computeOffsets(mo, &signalOffset, &methodOffset);
+ signal_index = QMetaObjectPrivate::originalClone(mo, signal_index - methodOffset) + signalOffset;
+ }
+ }
return QMetaObjectPrivate::disconnect(sender, signal_index,
receiver, method_index);
}
diff --git a/src/corelib/tools/qlist.cpp b/src/corelib/tools/qlist.cpp
index d954160..58406b9 100644
--- a/src/corelib/tools/qlist.cpp
+++ b/src/corelib/tools/qlist.cpp
@@ -94,7 +94,6 @@ QListData::Data *QListData::detach()
/*!
* Detaches the QListData by reallocating new memory.
* Returns the old (shared) data, it is up to the caller to deref() and free()
- * For the new data node_copy needs to be called.
*
* \internal
*/
@@ -104,6 +103,7 @@ QListData::Data *QListData::detach2()
Data* t = static_cast<Data *>(qMalloc(DataHeaderSize + x->alloc * sizeof(void *)));
Q_CHECK_PTR(t);
+ ::memcpy(t, x, DataHeaderSize + x->alloc * sizeof(void *));
t->ref = 1;
t->sharable = true;
t->alloc = x->alloc;
diff --git a/src/corelib/tools/qlist.h b/src/corelib/tools/qlist.h
index ab6f7bd..5fa0f6c 100644
--- a/src/corelib/tools/qlist.h
+++ b/src/corelib/tools/qlist.h
@@ -381,9 +381,6 @@ Q_INLINE_TEMPLATE void QList<T>::node_copy(Node *from, Node *to, Node *src)
(reinterpret_cast<T*>(current--))->~T();
QT_RETHROW;
}
- } else {
- if (src != from && to - from > 0)
- memcpy(from, src, (to - from) * sizeof(Node *));
}
}