diff --git a/TelepathyQt/contact-manager.cpp b/TelepathyQt/contact-manager.cpp index a67e736..dfa28bc 100644 --- a/TelepathyQt/contact-manager.cpp +++ b/TelepathyQt/contact-manager.cpp @@ -1341,17 +1341,27 @@ void ContactManager::onAvatarRetrieved(uint handle, const QString &token, debug() << "Filename:" << avatarFileName; debug() << "MimeType:" << mimeType; - QTemporaryFile mimeTypeFile(mimeTypeFileName); - mimeTypeFile.open(); - mimeTypeFile.write(mimeType.toLatin1()); - mimeTypeFile.setAutoRemove(false); - mimeTypeFile.rename(mimeTypeFileName); - - QTemporaryFile avatarFile(avatarFileName); - avatarFile.open(); - avatarFile.write(data); - avatarFile.setAutoRemove(false); - avatarFile.rename(avatarFileName); + if (!QFile::exists(mimeTypeFileName)) { + QTemporaryFile mimeTypeFile(mimeTypeFileName); + if (mimeTypeFile.open()) { + mimeTypeFile.write(mimeType.toLatin1()); + mimeTypeFile.setAutoRemove(false); + if (!mimeTypeFile.rename(mimeTypeFileName)) { + mimeTypeFile.remove(); + } + } + } + + if (!QFile::exists(avatarFileName)) { + QTemporaryFile avatarFile(avatarFileName); + if (avatarFile.open()) { + avatarFile.write(data); + avatarFile.setAutoRemove(false); + if (!avatarFile.rename(avatarFileName)) { + avatarFile.remove(); + } + } + } } ContactPtr contact = lookupContactByHandle(handle);