Browse Source

minor optimization: avoid opening a file twice when its full contents are read.

Sasha Szpakowski 8 months ago
parent
commit
850e721be2
2 changed files with 6 additions and 2 deletions
  1. 4 2
      src/modules/filesystem/File.cpp
  2. 2 0
      src/modules/filesystem/File.h

+ 4 - 2
src/modules/filesystem/File.cpp

@@ -33,7 +33,7 @@ File::~File()
 
 FileData *File::read()
 {
-	return read(getSize());
+	return read(SIZE_ALL);
 }
 
 FileData *File::read(int64 size)
@@ -46,7 +46,9 @@ FileData *File::read(int64 size)
 	int64 max = getSize();
 	int64 cur = tell();
 
-	if (size < 0)
+	if (size == SIZE_ALL)
+		size = max;
+	else if (size < 0)
 		throw love::Exception("Invalid read size.");
 
 	// Clamping because the file offset may be in a weird position.

+ 2 - 0
src/modules/filesystem/File.h

@@ -47,6 +47,8 @@ public:
 
 	static love::Type type;
 
+	static const int64 SIZE_ALL = -1;
+
 	/**
 	 * File open mode.
 	 **/