From 7efce9fab923e82794795fc914196fe55b1b3de8 Mon Sep 17 00:00:00 2001 From: Nicky Date: Thu, 5 Nov 2015 14:58:30 +0100 Subject: [PATCH] HAndle eventual fread failed & convert line endings to Unix. --- indra/newview/llfloaterscriptrecover.cpp | 60 +++++++++++++----------- 1 file changed, 32 insertions(+), 28 deletions(-) diff --git a/indra/newview/llfloaterscriptrecover.cpp b/indra/newview/llfloaterscriptrecover.cpp index 3ebabab6dc..5b9e5ac84c 100644 --- a/indra/newview/llfloaterscriptrecover.cpp +++ b/indra/newview/llfloaterscriptrecover.cpp @@ -251,34 +251,38 @@ void LLScriptRecoverQueue::onCreateScript(const LLUUID& idItem) std::string strCapsUrl = gAgent.getRegion()->getCapability("UpdateScriptAgent"); - std::string buffer; - llstat stat; - if( 0 == LLFile::stat(strFilePath, &stat ) && stat.st_size > 0 ) - { - buffer.resize( stat.st_size ); - LLFILE *pFile = LLFile::fopen( strFileName, "wb" ); - - if( pFile ) - { - fread( &buffer[0], 1, stat.st_size, pFile ); - LLFile::close( pFile ); - } - else - { - buffer = ""; - LL_WARNS() << "Cannot open " << strFilePath << LL_ENDL; - } - } - else - { - LL_WARNS() << "No access to " << strFilePath << LL_ENDL; - } - - LLBufferedAssetUploadInfo::taskUploadFinish_f proc = boost::bind(&LLScriptRecoverQueue::onSavedScript, this, _1, _2, _3, _4 ); - - LLResourceUploadInfo::ptr_t uploadInfo(new LLScriptAssetUpload( idItem, buffer, proc ) ); - - LLViewerAssetUpload::EnqueueInventoryUpload(strCapsUrl, uploadInfo); + std::string buffer; + llstat stat; + if( 0 == LLFile::stat(strFilePath, &stat ) && stat.st_size > 0 ) + { + buffer.resize( stat.st_size ); + LLFILE *pFile = LLFile::fopen( strFileName, "wb" ); + + if( pFile ) + { + if( fread( &buffer[0], 1, stat.st_size, pFile ) != stat.st_size ) + { + LL_WARNS() << "Incomplete read of " << strFilePath << LL_ENDL; + buffer = ""; + } + LLFile::close( pFile ); + } + else + { + buffer = ""; + LL_WARNS() << "Cannot open " << strFilePath << LL_ENDL; + } + } + else + { + LL_WARNS() << "No access to " << strFilePath << LL_ENDL; + } + + LLBufferedAssetUploadInfo::taskUploadFinish_f proc = boost::bind(&LLScriptRecoverQueue::onSavedScript, this, _1, _2, _3, _4 ); + + LLResourceUploadInfo::ptr_t uploadInfo(new LLScriptAssetUpload( idItem, buffer, proc ) ); + + LLViewerAssetUpload::EnqueueInventoryUpload(strCapsUrl, uploadInfo); } void LLScriptRecoverQueue::onSavedScript(LLUUID itemId, LLUUID newAssetId, LLUUID newItemId, LLSD response)