diff --git a/indra/newview/llpreviewscript.cpp b/indra/newview/llpreviewscript.cpp index f499f14846e95ad67f8af688f6feb5723981ee70..102e939374589c950f9d3b98078df29dd8dc0c51 100644 --- a/indra/newview/llpreviewscript.cpp +++ b/indra/newview/llpreviewscript.cpp @@ -599,18 +599,25 @@ bool LLScriptEdCore::loadScriptText(const std::string& filename) fseek(file, 0L, SEEK_END); size_t file_length = (size_t) ftell(file); fseek(file, 0L, SEEK_SET); - char* buffer = new char[file_length+1]; - size_t nread = fread(buffer, 1, file_length, file); - if (nread < file_length) - { - LL_WARNS() << "Short read" << LL_ENDL; - } - buffer[nread] = '\0'; - fclose(file); - - mEditor->setText(LLStringExplicit(buffer)); - delete[] buffer; - + if (file_length > 0) + { + auto buffer = std::make_unique<char[]>(file_length + 1); + size_t nread = fread(buffer.get(), 1, file_length, file); + if (nread < file_length) + { + LL_WARNS() << "Short read" << LL_ENDL; + } + buffer[nread] = '\0'; + fclose(file); + + mEditor->setText(LLStringExplicit(buffer.get())); + } + else + { + LL_WARNS() << "Error getting file size " << filename << LL_ENDL; + fclose(file); + return false; + } return true; }