summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'Swiften/Avatars/VCardAvatarManager.cpp')
-rw-r--r--Swiften/Avatars/VCardAvatarManager.cpp9
1 files changed, 7 insertions, 2 deletions
diff --git a/Swiften/Avatars/VCardAvatarManager.cpp b/Swiften/Avatars/VCardAvatarManager.cpp
index 84f94d5..c9571c3 100644
--- a/Swiften/Avatars/VCardAvatarManager.cpp
+++ b/Swiften/Avatars/VCardAvatarManager.cpp
@@ -28,20 +28,25 @@ void VCardAvatarManager::handleVCardChanged(const JID& from) {
onAvatarChanged(from);
}
std::string VCardAvatarManager::getAvatarHash(const JID& jid) const {
JID avatarJID = getAvatarJID(jid);
std::string hash = vcardManager_->getPhotoHash(avatarJID);
if (!hash.empty()) {
if (!avatarStorage_->hasAvatar(hash)) {
VCard::ref vCard = vcardManager_->getVCard(avatarJID);
- assert(vCard);
- avatarStorage_->addAvatar(hash, vCard->getPhoto());
+ if (vCard) {
+ avatarStorage_->addAvatar(hash, vCard->getPhoto());
+ }
+ else {
+ // Can happen if the cache is inconsistent.
+ hash = "";
+ }
}
}
return hash;
}
JID VCardAvatarManager::getAvatarJID(const JID& jid) const {
JID bareFrom = jid.toBare();
return (mucRegistry_ && mucRegistry_->isMUC(bareFrom)) ? jid : bareFrom;
}