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;
 }