aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2008-03-04 16:57:32 +0000
committerGravatar Szymon Tomasz Stefanek2008-03-04 16:57:32 +0000
commitde126241fdebddee2c10a027b19b9f4129a6d7b2 (patch)
treec5340b7cea9ba40fde9f4db8ab179c3b12db194a
parentlittle doc fixes (diff)
downloadKVIrc-de126241fdebddee2c10a027b19b9f4129a6d7b2.tar.gz
KVIrc-de126241fdebddee2c10a027b19b9f4129a6d7b2.tar.bz2
KVIrc-de126241fdebddee2c10a027b19b9f4129a6d7b2.zip
Fix for a crash with shared files
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@1182 17fca916-40b9-46aa-a4ea-0a15b648b75c
-rw-r--r--data/pics/kvi_splash.pngbin155352 -> 155760 bytes
-rw-r--r--src/kvilib/core/kvi_pointerhashtable.h6
-rw-r--r--src/kvilib/ext/kvi_sharedfiles.cpp11
3 files changed, 11 insertions, 6 deletions
diff --git a/data/pics/kvi_splash.png b/data/pics/kvi_splash.png
index aba081487..6219a3b09 100644
--- a/data/pics/kvi_splash.png
+++ b/data/pics/kvi_splash.png
Binary files differ
diff --git a/src/kvilib/core/kvi_pointerhashtable.h b/src/kvilib/core/kvi_pointerhashtable.h
index 7a93251d2..06b3911a6 100644
--- a/src/kvilib/core/kvi_pointerhashtable.h
+++ b/src/kvilib/core/kvi_pointerhashtable.h
@@ -725,8 +725,8 @@ public:
m_bAutoDelete = true;
m_bDeepCopyKeys = bDeepCopyKeys;
m_uSize = uSize > 0 ? uSize : 32;
- m_pDataArray = new KviPointerList<KviPointerHashTableEntry<Key,T> > *[uSize];
- for(unsigned int i=0;i<m_uSize;i++)m_pDataArray[i] = 0;
+ m_pDataArray = new KviPointerList<KviPointerHashTableEntry<Key,T> > *[m_uSize];
+ for(unsigned int i=0;i<m_uSize;i++)m_pDataArray[i] = NULL;
}
///
@@ -742,7 +742,7 @@ public:
m_bDeepCopyKeys = t.m_bDeepCopyKeys;
m_uSize = t.m_uSize;
m_pDataArray = new KviPointerList<KviPointerHashTableEntry<Key,T> > *[m_uSize];
- for(unsigned int i=0;i<m_uSize;i++)m_pDataArray[i] = 0;
+ for(unsigned int i=0;i<m_uSize;i++)m_pDataArray[i] = NULL;
copyFrom(t);
}
diff --git a/src/kvilib/ext/kvi_sharedfiles.cpp b/src/kvilib/ext/kvi_sharedfiles.cpp
index 693f24d38..dcb9464ec 100644
--- a/src/kvilib/ext/kvi_sharedfiles.cpp
+++ b/src/kvilib/ext/kvi_sharedfiles.cpp
@@ -124,6 +124,9 @@ void KviSharedFilesManager::cleanup()
bool bOtherStuffToCleanup = false;
//bool bChanged = false;
+ KviPointerList<QString> lDying;
+ lDying.setAutoDelete(true);
+
while(KviSharedFileList * l = it.current())
{
KviPointerList<KviSharedFile> tmp;
@@ -147,12 +150,14 @@ void KviSharedFilesManager::cleanup()
emit sharedFileRemoved(fo);
}
if(l->count() == 0)
- {
- m_pSharedListDict->remove(it.currentKey());
- }
+ lDying.append(new QString(it.currentKey()));
+
++it;
}
+ for(QString * pDyingKey = lDying.first();pDyingKey;pDyingKey = lDying.next())
+ m_pSharedListDict->remove(*pDyingKey);
+
if(!bOtherStuffToCleanup)m_pCleanupTimer->stop();
//if(bChanged)emit sharedFilesChanged();
}