viewer#1073 crash at loadSkeleton
looks like file that was being parced got corrupted 'in progress'master
parent
f382180eb5
commit
50a70fe2f8
|
|
@ -1352,6 +1352,10 @@ BOOL gunzip_file(const std::string& srcfile, const std::string& dstfile)
|
|||
} while(gzeof(src) == 0);
|
||||
fclose(dst);
|
||||
dst = NULL;
|
||||
#if LL_WINDOWS
|
||||
// Rename in windows needs the dstfile to not exist.
|
||||
LLFile::remove(dstfile, ENOENT);
|
||||
#endif
|
||||
if (LLFile::rename(tmpfile, dstfile) == -1) goto err; /* Flawfinder: ignore */
|
||||
retval = TRUE;
|
||||
err:
|
||||
|
|
|
|||
|
|
@ -2705,6 +2705,17 @@ bool LLInventoryModel::loadSkeleton(
|
|||
gzip_filename.append(".gz");
|
||||
LLFILE* fp = LLFile::fopen(gzip_filename, "rb");
|
||||
bool remove_inventory_file = false;
|
||||
if (LLAppViewer::instance()->isSecondInstance())
|
||||
{
|
||||
// Safeguard viewer against trying to unpack file twice
|
||||
// ex: user logs into two accounts simultaneously, so two
|
||||
// viewers are trying to unpack library into same file
|
||||
//
|
||||
// Would be better to do it in gunzip_file, but it doesn't
|
||||
// have access to llfilesystem
|
||||
inventory_filename = gDirUtilp->getTempFilename();
|
||||
remove_inventory_file = true;
|
||||
}
|
||||
if(fp)
|
||||
{
|
||||
fclose(fp);
|
||||
|
|
@ -2913,7 +2924,7 @@ bool LLInventoryModel::loadSkeleton(
|
|||
// clean up the gunzipped file.
|
||||
LLFile::remove(inventory_filename);
|
||||
}
|
||||
if(is_cache_obsolete)
|
||||
if(is_cache_obsolete && !LLAppViewer::instance()->isSecondInstance())
|
||||
{
|
||||
// If out of date, remove the gzipped file too.
|
||||
LL_WARNS(LOG_INV) << "Inv cache out of date, removing" << LL_ENDL;
|
||||
|
|
|
|||
|
|
@ -2951,7 +2951,9 @@ std::string LLStartUp::startupStateToString(EStartupState state)
|
|||
RTNENUM( STATE_AGENT_SEND );
|
||||
RTNENUM( STATE_AGENT_WAIT );
|
||||
RTNENUM( STATE_INVENTORY_SEND );
|
||||
RTNENUM(STATE_INVENTORY_CALLBACKS );
|
||||
RTNENUM( STATE_INVENTORY_CALLBACKS );
|
||||
RTNENUM( STATE_INVENTORY_SKEL );
|
||||
RTNENUM( STATE_INVENTORY_SEND2 );
|
||||
RTNENUM( STATE_MISC );
|
||||
RTNENUM( STATE_PRECACHE );
|
||||
RTNENUM( STATE_WEARABLES_WAIT );
|
||||
|
|
|
|||
Loading…
Reference in New Issue