mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-10-01 02:35:48 -04:00
Fixed crash after last commit in p3idservice.cc.
Fixed memory leaks and possible crashs in ::getGroupData - p3gxschannels - p3gxscircles - p3gxsforums - p3idservice - p3posted - p3photoservice git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@6524 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
3730645808
commit
f5218cdfc3
@ -1109,7 +1109,6 @@ bool RsGenExchange::getMsgRelatedMeta(const uint32_t &token, GxsMsgRelatedMetaMa
|
||||
|
||||
bool RsGenExchange::getGroupData(const uint32_t &token, std::vector<RsGxsGrpItem *>& grpItem)
|
||||
{
|
||||
|
||||
std::list<RsNxsGrp*> nxsGrps;
|
||||
bool ok = mDataAccess->getGroupData(token, nxsGrps);
|
||||
|
||||
@ -1154,10 +1153,8 @@ bool RsGenExchange::getGroupData(const uint32_t &token, std::vector<RsGxsGrpItem
|
||||
return ok;
|
||||
}
|
||||
|
||||
bool RsGenExchange::getMsgData(const uint32_t &token,
|
||||
GxsMsgDataMap &msgItems)
|
||||
bool RsGenExchange::getMsgData(const uint32_t &token, GxsMsgDataMap &msgItems)
|
||||
{
|
||||
|
||||
RsStackMutex stack(mGenMtx);
|
||||
NxsMsgDataResult msgResult;
|
||||
bool ok = mDataAccess->getMsgData(token, msgResult);
|
||||
@ -1170,16 +1167,14 @@ bool RsGenExchange::getMsgData(const uint32_t &token,
|
||||
std::vector<RsGxsMsgItem*> gxsMsgItems;
|
||||
const RsGxsGroupId& grpId = mit->first;
|
||||
std::vector<RsNxsMsg*>& nxsMsgsV = mit->second;
|
||||
std::vector<RsNxsMsg*>::iterator vit
|
||||
= nxsMsgsV.begin();
|
||||
std::vector<RsNxsMsg*>::iterator vit = nxsMsgsV.begin();
|
||||
for(; vit != nxsMsgsV.end(); vit++)
|
||||
{
|
||||
RsNxsMsg*& msg = *vit;
|
||||
RsItem* item = NULL;
|
||||
|
||||
if(msg->msg.bin_len != 0)
|
||||
item = mSerialiser->deserialise(msg->msg.bin_data,
|
||||
&msg->msg.bin_len);
|
||||
item = mSerialiser->deserialise(msg->msg.bin_data, &msg->msg.bin_len);
|
||||
|
||||
if (item)
|
||||
{
|
||||
|
@ -194,6 +194,7 @@ bool p3GxsChannels::getGroupData(const uint32_t &token, std::vector<RsGxsChannel
|
||||
{
|
||||
std::cerr << "p3GxsChannels::getGroupData() ERROR in decode";
|
||||
std::cerr << std::endl;
|
||||
delete(*vit);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -370,11 +370,20 @@ bool p3GxsCircles::getGroupData(const uint32_t &token, std::vector<RsGxsCircleGr
|
||||
for(; vit != grpData.end(); vit++)
|
||||
{
|
||||
RsGxsCircleGroupItem* item = dynamic_cast<RsGxsCircleGroupItem*>(*vit);
|
||||
if (item)
|
||||
{
|
||||
RsGxsCircleGroup group;
|
||||
item->convertTo(group);
|
||||
|
||||
// If its cached - add that info (TODO).
|
||||
groups.push_back(group);
|
||||
delete(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "Not a RsGxsCircleGroupItem, deleting!" << std::endl;
|
||||
delete *vit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,12 +102,20 @@ bool p3GxsForums::getGroupData(const uint32_t &token, std::vector<RsGxsForumGrou
|
||||
for(; vit != grpData.end(); vit++)
|
||||
{
|
||||
RsGxsForumGroupItem* item = dynamic_cast<RsGxsForumGroupItem*>(*vit);
|
||||
if (item)
|
||||
{
|
||||
RsGxsForumGroup grp = item->mGroup;
|
||||
item->mGroup.mMeta = item->meta;
|
||||
grp.mMeta = item->mGroup.mMeta;
|
||||
delete item;
|
||||
groups.push_back(grp);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "Not a GxsForumGrpItem, deleting!" << std::endl;
|
||||
delete *vit;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
@ -397,7 +397,6 @@ bool p3IdService::getReputation(const RsGxsId &id, GixsReputation &rep)
|
||||
|
||||
bool p3IdService::getGroupData(const uint32_t &token, std::vector<RsGxsIdGroup> &groups)
|
||||
{
|
||||
|
||||
std::vector<RsGxsGrpItem*> grpData;
|
||||
bool ok = RsGenExchange::getGroupData(token, grpData);
|
||||
|
||||
@ -408,6 +407,8 @@ bool p3IdService::getGroupData(const uint32_t &token, std::vector<RsGxsIdGroup>
|
||||
for(; vit != grpData.end(); vit++)
|
||||
{
|
||||
RsGxsIdGroupItem* item = dynamic_cast<RsGxsIdGroupItem*>(*vit);
|
||||
if (item)
|
||||
{
|
||||
RsGxsIdGroup group = item->group;
|
||||
group.mMeta = item->meta;
|
||||
|
||||
@ -436,14 +437,19 @@ bool p3IdService::getGroupData(const uint32_t &token, std::vector<RsGxsIdGroup>
|
||||
}
|
||||
|
||||
groups.push_back(group);
|
||||
delete(item);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "Not a Id Item, deleting!" << std::endl;
|
||||
delete(*vit);
|
||||
}
|
||||
}
|
||||
delete *vit ;
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
bool p3IdService::getMsgData(const uint32_t &token, std::vector<RsGxsIdOpinion> &opinions)
|
||||
{
|
||||
GxsMsgDataMap msgData;
|
||||
|
@ -207,18 +207,25 @@ bool p3PhotoService::getAlbum(const uint32_t& token, std::vector<RsPhotoAlbum>&
|
||||
for(; vit != grpData.end(); vit++)
|
||||
{
|
||||
RsGxsPhotoAlbumItem* item = dynamic_cast<RsGxsPhotoAlbumItem*>(*vit);
|
||||
if (item)
|
||||
{
|
||||
RsPhotoAlbum album = item->album;
|
||||
item->album.mMeta = item->meta;
|
||||
album.mMeta = item->album.mMeta;
|
||||
delete item;
|
||||
albums.push_back(album);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "Not a RsGxsPhotoAlbumItem, deleting!" << std::endl;
|
||||
delete *vit;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
bool p3PhotoService::getPhoto(const uint32_t& token, PhotoResult& photos)
|
||||
{
|
||||
GxsMsgDataMap msgData;
|
||||
|
@ -179,12 +179,20 @@ bool p3Posted::getGroupData(const uint32_t &token, std::vector<RsPostedGroup> &g
|
||||
for(; vit != grpData.end(); vit++)
|
||||
{
|
||||
RsGxsPostedGroupItem* item = dynamic_cast<RsGxsPostedGroupItem*>(*vit);
|
||||
if (item)
|
||||
{
|
||||
RsPostedGroup grp = item->mGroup;
|
||||
item->mGroup.mMeta = item->meta;
|
||||
grp.mMeta = item->mGroup.mMeta;
|
||||
delete item;
|
||||
groups.push_back(grp);
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cerr << "Not a RsGxsPostedGroupItem, deleting!" << std::endl;
|
||||
delete *vit;
|
||||
}
|
||||
}
|
||||
}
|
||||
return ok;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user