File diff r23496:661d21df67d7 → r23497:a0ab44ebd2fa
src/saveload/saveload.cpp
Show inline comments
 
@@ -1841,21 +1841,21 @@ struct FileReader : LoadFilter {
 
		this->file = NULL;
 

	
 
		/* Make sure we don't double free. */
 
		_sl.sf = NULL;
 
	}
 

	
 
	/* virtual */ size_t Read(byte *buf, size_t size)
 
	size_t Read(byte *buf, size_t size) override
 
	{
 
		/* We're in the process of shutting down, i.e. in "failure" mode. */
 
		if (this->file == NULL) return 0;
 

	
 
		return fread(buf, 1, size, this->file);
 
	}
 

	
 
	/* virtual */ void Reset()
 
	void Reset() override
 
	{
 
		clearerr(this->file);
 
		if (fseek(this->file, this->begin, SEEK_SET)) {
 
			DEBUG(sl, 1, "Could not reset the file reading");
 
		}
 
	}
 
@@ -1879,21 +1879,21 @@ struct FileWriter : SaveFilter {
 
		this->Finish();
 

	
 
		/* Make sure we don't double free. */
 
		_sl.sf = NULL;
 
	}
 

	
 
	/* virtual */ void Write(byte *buf, size_t size)
 
	void Write(byte *buf, size_t size) override
 
	{
 
		/* We're in the process of shutting down, i.e. in "failure" mode. */
 
		if (this->file == NULL) return;
 

	
 
		if (fwrite(buf, 1, size, this->file) != size) SlError(STR_GAME_SAVELOAD_ERROR_FILE_NOT_WRITEABLE);
 
	}
 

	
 
	/* virtual */ void Finish()
 
	void Finish() override
 
	{
 
		if (this->file != NULL) fclose(this->file);
 
		this->file = NULL;
 
	}
 
};
 

	
 
@@ -1915,13 +1915,13 @@ struct LZOLoadFilter : LoadFilter {
 
	 */
 
	LZOLoadFilter(LoadFilter *chain) : LoadFilter(chain)
 
	{
 
		if (lzo_init() != LZO_E_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize decompressor");
 
	}
 

	
 
	/* virtual */ size_t Read(byte *buf, size_t ssize)
 
	size_t Read(byte *buf, size_t ssize) override
 
	{
 
		assert(ssize >= LZO_BUFFER_SIZE);
 

	
 
		/* Buffer size is from the LZO docs plus the chunk header size. */
 
		byte out[LZO_BUFFER_SIZE + LZO_BUFFER_SIZE / 16 + 64 + 3 + sizeof(uint32) * 2];
 
		uint32 tmp[2];
 
@@ -1963,13 +1963,13 @@ struct LZOSaveFilter : SaveFilter {
 
	 */
 
	LZOSaveFilter(SaveFilter *chain, byte compression_level) : SaveFilter(chain)
 
	{
 
		if (lzo_init() != LZO_E_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "cannot initialize compressor");
 
	}
 

	
 
	/* virtual */ void Write(byte *buf, size_t size)
 
	void Write(byte *buf, size_t size) override
 
	{
 
		const lzo_bytep in = buf;
 
		/* Buffer size is from the LZO docs plus the chunk header size. */
 
		byte out[LZO_BUFFER_SIZE + LZO_BUFFER_SIZE / 16 + 64 + 3 + sizeof(uint32) * 2];
 
		byte wrkmem[LZO1X_1_MEM_COMPRESS];
 
		lzo_uint outlen;
 
@@ -2002,13 +2002,13 @@ struct NoCompLoadFilter : LoadFilter {
 
	 * @param chain The next filter in this chain.
 
	 */
 
	NoCompLoadFilter(LoadFilter *chain) : LoadFilter(chain)
 
	{
 
	}
 

	
 
	/* virtual */ size_t Read(byte *buf, size_t size)
 
	size_t Read(byte *buf, size_t size) override
 
	{
 
		return this->chain->Read(buf, size);
 
	}
 
};
 

	
 
/** Filter without any compression. */
 
@@ -2019,13 +2019,13 @@ struct NoCompSaveFilter : SaveFilter {
 
	 * @param compression_level The requested level of compression.
 
	 */
 
	NoCompSaveFilter(SaveFilter *chain, byte compression_level) : SaveFilter(chain)
 
	{
 
	}
 

	
 
	/* virtual */ void Write(byte *buf, size_t size)
 
	void Write(byte *buf, size_t size) override
 
	{
 
		this->chain->Write(buf, size);
 
	}
 
};
 

	
 
/********************************************
 
@@ -2053,13 +2053,13 @@ struct ZlibLoadFilter : LoadFilter {
 
	/** Clean everything up. */
 
	~ZlibLoadFilter()
 
	{
 
		inflateEnd(&this->z);
 
	}
 

	
 
	/* virtual */ size_t Read(byte *buf, size_t size)
 
	size_t Read(byte *buf, size_t size) override
 
	{
 
		this->z.next_out  = buf;
 
		this->z.avail_out = (uint)size;
 

	
 
		do {
 
			/* read more bytes from the file? */
 
@@ -2132,18 +2132,18 @@ struct ZlibSaveFilter : SaveFilter {
 
			if (r == Z_STREAM_END) break;
 

	
 
			if (r != Z_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "zlib returned error code");
 
		} while (this->z.avail_in || !this->z.avail_out);
 
	}
 

	
 
	/* virtual */ void Write(byte *buf, size_t size)
 
	void Write(byte *buf, size_t size) override
 
	{
 
		this->WriteLoop(buf, size, 0);
 
	}
 

	
 
	/* virtual */ void Finish()
 
	void Finish() override
 
	{
 
		this->WriteLoop(NULL, 0, Z_FINISH);
 
		this->chain->Finish();
 
	}
 
};
 

	
 
@@ -2182,13 +2182,13 @@ struct LZMALoadFilter : LoadFilter {
 
	/** Clean everything up. */
 
	~LZMALoadFilter()
 
	{
 
		lzma_end(&this->lzma);
 
	}
 

	
 
	/* virtual */ size_t Read(byte *buf, size_t size)
 
	size_t Read(byte *buf, size_t size) override
 
	{
 
		this->lzma.next_out  = buf;
 
		this->lzma.avail_out = size;
 

	
 
		do {
 
			/* read more bytes from the file? */
 
@@ -2251,18 +2251,18 @@ struct LZMASaveFilter : SaveFilter {
 
			}
 
			if (r == LZMA_STREAM_END) break;
 
			if (r != LZMA_OK) SlError(STR_GAME_SAVELOAD_ERROR_BROKEN_INTERNAL_ERROR, "liblzma returned error code");
 
		} while (this->lzma.avail_in || !this->lzma.avail_out);
 
	}
 

	
 
	/* virtual */ void Write(byte *buf, size_t size)
 
	void Write(byte *buf, size_t size) override
 
	{
 
		this->WriteLoop(buf, size, LZMA_RUN);
 
	}
 

	
 
	/* virtual */ void Finish()
 
	void Finish() override
 
	{
 
		this->WriteLoop(NULL, 0, LZMA_FINISH);
 
		this->chain->Finish();
 
	}
 
};