Merge pull request #285 from PhenomRetroShare/Fix_SSGxsChannelGroupLoadNullError

Fix error "(EE) SSGxsChannelGroup::load() asked to load a null string.
This commit is contained in:
electron128 2016-02-26 18:13:20 +01:00
commit 20fcf635e4
2 changed files with 18 additions and 16 deletions

View File

@ -514,20 +514,20 @@ bool p3GxsChannels::setChannelDownloadDirectory(const RsGxsGroupId &groupId, con
return true; return true;
} }
bool p3GxsChannels::getChannelDownloadDirectory(const RsGxsGroupId & id,std::string& directory) bool p3GxsChannels::getChannelDownloadDirectory(const RsGxsGroupId & groupId,std::string& directory)
{ {
#ifdef GXSCHANNELS_DEBUG #ifdef GXSCHANNELS_DEBUG
std::cerr << "p3GxsChannels::autoDownloadEnabled(" << id << ")" << std::endl; std::cerr << "p3GxsChannels::getChannelDownloadDirectory(" << id << ")" << std::endl;
#endif #endif
std::map<RsGxsGroupId, RsGroupMetaData>::iterator it; std::map<RsGxsGroupId, RsGroupMetaData>::iterator it;
it = mSubscribedGroups.find(id); it = mSubscribedGroups.find(groupId);
if (it == mSubscribedGroups.end()) if (it == mSubscribedGroups.end())
{ {
#ifdef GXSCHANNELS_DEBUG #ifdef GXSCHANNELS_DEBUG
std::cerr << "p3GxsChannels::autoDownloadEnabled() No Entry" << std::endl; std::cerr << "p3GxsChannels::getChannelDownloadDirectory() No Entry" << std::endl;
#endif #endif
return false; return false;
@ -904,7 +904,7 @@ void p3GxsChannels::handleResponse(uint32_t token, uint32_t req_type)
/********************************************************************************************/ /********************************************************************************************/
bool p3GxsChannels::autoDownloadEnabled(const RsGxsGroupId &id,bool& enabled) bool p3GxsChannels::autoDownloadEnabled(const RsGxsGroupId &groupId,bool& enabled)
{ {
#ifdef GXSCHANNELS_DEBUG #ifdef GXSCHANNELS_DEBUG
std::cerr << "p3GxsChannels::autoDownloadEnabled(" << id << ")"; std::cerr << "p3GxsChannels::autoDownloadEnabled(" << id << ")";
@ -913,7 +913,7 @@ bool p3GxsChannels::autoDownloadEnabled(const RsGxsGroupId &id,bool& enabled)
std::map<RsGxsGroupId, RsGroupMetaData>::iterator it; std::map<RsGxsGroupId, RsGroupMetaData>::iterator it;
it = mSubscribedGroups.find(id); it = mSubscribedGroups.find(groupId);
if (it == mSubscribedGroups.end()) if (it == mSubscribedGroups.end())
{ {
#ifdef GXSCHANNELS_DEBUG #ifdef GXSCHANNELS_DEBUG
@ -927,22 +927,24 @@ bool p3GxsChannels::autoDownloadEnabled(const RsGxsGroupId &id,bool& enabled)
/* extract from ServiceString */ /* extract from ServiceString */
SSGxsChannelGroup ss; SSGxsChannelGroup ss;
ss.load(it->second.mServiceString); ss.load(it->second.mServiceString);
enabled = ss.mAutoDownload; enabled = ss.mAutoDownload;
return true ; return true;
} }
bool SSGxsChannelGroup::load(const std::string &input) bool SSGxsChannelGroup::load(const std::string &input)
{ {
if(input.empty())
{
#ifdef GXSCHANNELS_DEBUG
std::cerr << "SSGxsChannelGroup::load() asked to load a null string." << std::endl;
#endif
return true ;
}
int download_val; int download_val;
mAutoDownload = false; mAutoDownload = false;
mDownloadDirectory.clear(); mDownloadDirectory.clear();
if(input.empty())
{
std::cerr << "(EE) SSGxsChannelGroup::load() asked to load a null string. Weird." << std::endl;
return false ;
}
RsTemporaryMemory tmpmem(input.length()); RsTemporaryMemory tmpmem(input.length());

View File

@ -45,12 +45,12 @@
class SSGxsChannelGroup class SSGxsChannelGroup
{ {
public: public:
SSGxsChannelGroup(): mAutoDownload(false), mDownloadDirectory("") {}
bool load(const std::string &input); bool load(const std::string &input);
std::string save() const; std::string save() const;
bool mAutoDownload; bool mAutoDownload;
std::string mDownloadDirectory ; std::string mDownloadDirectory;
}; };
@ -176,7 +176,7 @@ static uint32_t channelsAuthenPolicy();
void updateSubscribedGroup(const RsGroupMetaData &group); void updateSubscribedGroup(const RsGroupMetaData &group);
void clearUnsubscribedGroup(const RsGxsGroupId &id); void clearUnsubscribedGroup(const RsGxsGroupId &id);
bool setAutoDownload(const RsGxsGroupId &groupId, bool enabled); bool setAutoDownload(const RsGxsGroupId &groupId, bool enabled);
bool autoDownloadEnabled(const RsGxsGroupId &id, bool &enabled); bool autoDownloadEnabled(const RsGxsGroupId &groupId, bool &enabled);