You're shadowing fptr in the last if clause: if (!fptr) { LLFILE* fptr = LLFile::fopen(oldLogFileName(filename), "r"); /*Flawfinder: ignore*/ LL_INFOS("") << "Old :" << file_name << LL_ENDL; if (!fptr) { LLFILE* fptr = LLFile::fopen(ndsLogFileName(file_name), "r"); /*Flawfinder: ignore*/ LL_INFOS("") << "Orginal:" << file_name << LL_ENDL; if (!fptr) return; //No previous conversation with this name. } }
Change that to: if (!fptr) { fptr = LLFile::fopen(oldLogFileName(filename), "r");/*Flawfinder: ignore*/ LL_INFOS("") << "Old :" << file_name << LL_ENDL; if (!fptr) { LLFILE* fptr = LLFile::fopen(ndsLogFileName(file_name), "r"); /*Flawfinder: ignore*/ LL_INFOS("") << "Orginal:" << file_name << LL_ENDL; if (!fptr) return; //No previous conversation with this name. } } On Tue, Aug 31, 2010 at 5:22 PM, WolfPup Lowenhar <wolfpu...@earthlink.net> wrote: > > Sorry folks as this might get a little long. > First Code Snip its: > 1. see http://jira.secondlife.com/browse/VWR-20741 for reference to new > makeLofFileName in patch > 2. std::string LLLogChat::oldLogFileName(std::string filename) > { > time_t now; > time_t yesterday = time(&now) - 86400; > char dbuffer[20]; /* Flawfinder: ignore */ > if (filename == "chat") > { > strftime(dbuffer, 20, "-%Y-%m-%d", localtime(&yesterday)); > } > else > { > strftime(dbuffer, 20, "-%Y-%m", localtime(&yesterday)); > } > filename += dbuffer; > filename = cleanFileName(filename); > filename = > gDirUtilp->getExpandedFilename(LL_PATH_PER_ACCOUNT_CHAT_LOGS,filename); > filename += ".txt"; > LL_INFOS("") << "Old :" << filename << LL_ENDL; > return filename; > } > 3. std::string LLLogChat::ndsLogFileName(std::string filename) > { > filename = cleanFileName(filename); > filename = > gDirUtilp->getExpandedFilename(LL_PATH_PER_ACCOUNT_CHAT_LOGS,filename); > filename += ".txt"; > LL_INFOS("") << "Original:" << filename << LL_ENDL; > return filename; > } > 4. modified section of void LLLogChat::loadAllHistory(const std::string& > file_name, std::list<LLSD>& messages) > { > if (file_name.empty()) > { > llwarns << "Session name is Empty!" << llendl; > return ; > } > > LLFILE* fptr = LLFile::fopen(makeLogFileName(file_name), "r"); > /*Flawfinder: ignore*/ > LL_INFOS("") << "Current:" << file_name << LL_ENDL; > if (!fptr) > { > LLFILE* fptr = LLFile::fopen(oldLogFileName(filename), "r"); > /*Flawfinder: ignore*/ > LL_INFOS("") << "Old :" << file_name << LL_ENDL; > if (!fptr) > { > LLFILE* fptr = > LLFile::fopen(ndsLogFileName(file_name), "r"); /*Flawfinder: > ignore*/ > LL_INFOS("") << "Orginal:" << file_name << LL_ENDL; > if (!fptr) return; //No previous conversation > with this name. > } > } > > LL_INFOS("") << "Reading:" << file_name << LL_ENDL; > char buffer[LOG_RECALL_SIZE]; /*Flawfinder: ignore*/ > char *bptr; > S32 len; > bool firstline = TRUE; > if (fseek(fptr, (LOG_RECALL_SIZE - 1) * -1 , SEEK_END)) > > Problem: > When I get done with locating the right named log file and got to read it I > am ending up with fptr being null and causing viewer lock up and hard crash. > > _______________________________________________ > Policies and (un)subscribe information available here: > http://wiki.secondlife.com/wiki/OpenSource-Dev > Please read the policies before posting to keep unmoderated posting privileges _______________________________________________ Policies and (un)subscribe information available here: http://wiki.secondlife.com/wiki/OpenSource-Dev Please read the policies before posting to keep unmoderated posting privileges