88 Commits

Author SHA1 Message Date
Orgad Shaneh c5c083dd07 JANITORIAL: Fix some release build warnings
* Unused locals (assert is no-op in release build)
* Bad usage of strncpy
* Uninitialized variables
2025-05-05 04:44:20 +08:00
Filippos Karapetis 30d6e9452c Common: Simplify check and fix formatting 2024-12-20 14:03:20 +02:00
tunnelsociety 30661a9f07 COMMON: Avoid passing nullptr to memcpy in MemoryReadStream read()
Even with dataSize=0, this is undefined behaviour.
What caller would pass in nullptr? UBSan caught this happening in a
FreeType callback, for example.
2024-12-19 22:51:20 +02:00
sluicebox b5c4802ea8 COMMON: Remove MemoryReadStream::seek() assertion 2024-08-24 14:38:09 -07:00
Hubert Maier ec7d5f538d JANITORIAL: Add apostrophe to seek'ed to distinguish between command and typo in stream.cpp 2024-05-18 13:52:31 +02:00
Le Philousophe ead4171bbd COMMON: Rewrite writeStream to work with any ReadStream
This let it work with stream without a known size and avoids allocating
big buffers when file is big.
2023-08-28 21:49:03 +02:00
Vladimir Serbinenko 0adf22278b COMMON: Uplift SafeMutexedSeekableSubReadStream to common 2022-12-31 20:47:10 +01:00
Vladimir Serbinenko 81040b5d20 COMMON: Make memstream support SharedPtr-backed array
This allows to safely implement archive contents caches.

The change to lilliput is needed to allow to keep move-constructot
semantics of ScriptStream which would otherwise disappear because
DisposablePtr is non-copyable
2022-12-01 01:52:46 +01:00
Thunderforge fd129ebc0c JANITORIAL: "Mac OS X" and "OS X" to "macOS" in comments
Apple's desktop operating system was formerly called "Mac OS X" and "OS X", but since 2016 it has been called "macOS" (starting with version 10.12).

Changing across all comments and documentation to use this current terminology, except in cases where the historical versions are explicitly referenced. No code changes are made; we should consider changing those in future PRs.
2022-01-29 14:15:05 +01:00
hackingdemon 453f7cfffe COMMON: Fix BufferedWriteStream::pos() method
The pos() method of BufferedWriteStream should return the stream position
but actually returns the buffer position. That completely breaks saving
the game in AGS engine on the platforms using BufferedWriteStream wrapper
for savefile handling, such as Nintendo Switch. AGS engine's save file
writing functions use GetPosition() with later Seek() on stream,
so an invalid return value from GetPosition() results in invalid save files
that cannot be loaded and are skipped by the engine.
2022-01-18 15:31:59 +00:00
Eugene Sandulenko abea37c9bb ALL: Update ScummVM project license to GPLv3+ 2021-12-26 18:48:43 +01:00
Orgad Shaneh 7adcd48a41 COMMON: Use override
Using clang-tidy modernize-use-override
2021-11-14 14:35:15 +02:00
Paul Gilbert 9db14ee109 BACKENDS: Update all the backends to support SeekableWriteStream 2021-08-08 18:13:30 -07:00
Paul Gilbert 005561d305 COMMON: Increase Stream pos, seek, size from int32 to int64 2021-07-08 18:24:28 -07:00
SupSuper 721b7376bb COMMON: Clean up ReadStream::readString 2021-05-31 23:04:06 +01:00
SupSuper 48b9f54bfc COMMON: Add support for fixed-size strings in ReadStream::readString 2021-05-31 06:40:05 +01:00
Cameron Cawley b5d6716d1d COMMON: Add ReadStream::readString() and use it in the Ultima engine 2020-12-15 17:39:25 -08:00
Cameron Cawley e207fda7f7 COMMON: Allow ignoring CR line breaks in SeekableReadStream::readLine() 2020-05-12 14:41:53 +02:00
Cameron Cawley 13e5042dee COMMON: Add WriteStream::writeStream() 2020-02-09 23:26:45 +02:00
Bastien Bouclet bb27669026 COMMON: Refill the stream buffer after making a large read
After reading directly from the parent stream, the buffer needs to be
filled with the end of the read data so seeking back in the stream into
the buffered area and reading returns data consistent with the parent
stream.

Fixes bug #11342 (PSP port only).
2020-02-07 18:33:56 +01:00
D G Turner 0eec560cac COMMON: Add Missing Switch Default Cases to Stream Seek Methods
These are flagged by GCC if -Wswitch-default is enabled.
2019-10-03 01:01:16 +01:00
Paul Gilbert e2f68e2403 COMMON: Fix seek return values, memory stream use in create_titanic 2019-05-12 11:44:15 +03:00
Bastien Bouclet 955e18c648 COMMON: Use nullptr instead of NULL or 0 where appropriate 2018-05-10 08:35:46 +02:00
Adrian Frühwirth 3747d852ee JANITORIAL: Fix whitespace 2018-04-15 16:31:31 +02:00
Eugene Sandulenko 0b95b734b8 COMMON: Add ReadStream::readPascalString() 2017-01-14 12:45:58 +01:00
Eugene Sandulenko 3071bb40d8 COMMON: Added debug method for printing out stream contents 2016-10-26 19:00:13 +02:00
Alexander Tkachev 7a89caac84 COMMON: Add WriteStream::pos()
It returns int32, because some complex streams are derived from both
WriteStream and ReadStream, and in ReadStream pos() returns int32,
because -1 means an error.

I had to change MemoryStream's uint32 to int32, which is probably not so
good.
2016-08-04 14:36:21 +06:00
Johannes Schickel 854e22b38b COMMON: Make GPL headers consistent in themselves. 2014-02-18 02:39:33 +01:00
Johannes Schickel 2f73d64e80 Merge pull request #305 from giucam/bufferedseekable
Make BufferedSeekableReadStream use the buffer with SEEK_SET and SEEK_END
2013-01-28 08:43:52 -08:00
Johannes Schickel 5bfd2f6756 COMMON: Fix successive seeks in BufferedSeekableReadStream.
This fixes the failing test case added in
da8eeb9dbe.

Thanks to wjp for his input on this.
2013-01-28 17:34:37 +01:00
Johannes Schickel 354aa0f5f3 JANITORIAL: Use "End of anonymous namespace" as comment for anonymous namespaces. 2013-01-26 19:38:02 +01:00
Johannes Schickel b4d0a8ba66 JANITORIAL: Enforce "} // End of namespace" with a single space after }. 2013-01-26 19:38:02 +01:00
Giulio Camuffo edfcd768ba COMMON: Make BufferedSeekableReadStream use the buffer with SEEK_SET and SEEK_END 2013-01-26 19:12:26 +01:00
Johannes Schickel 48efab4e5a COMMON: Rename SafeSubReadStream to SafeSeekableSubReadStream.
It actually inherits from SeekableSubReadStream, so it should be named
accordingly.
2012-03-11 00:51:20 +01:00
Christoph Mallon a5a8833c05 COMMON: Add DisposablePtr<T>, which replaces many repeated implementations of a dispose flag. 2011-08-07 15:19:08 +02:00
strangerke 69b1485a22 GIT: Clean up: Suppress SVN tags, now useless 2011-05-12 01:16:22 +02:00
Sven Hesse 88d562a361 COMMON: Add a class SafeSubReadStream
SafeSubReadStream is basically a SeekableSubReadStream that
re-seek()s the parent stream before each read(). That way, more than
one SafeSubReadStream of the same parent stream can be used safely
at the same time, at the cost of increasing IO.
2011-05-06 16:47:48 +02:00
Ori Avtalion 9414d7a6e2 JANITORIAL: Reduce header dependencies in shared code
Some backends may break as I only compiled SDL
2011-04-28 15:08:58 +03:00
Johannes Schickel c6112f7383 COMMON: Do not call ReadStream::eos in SubReadStream::read.
Instead I moved the call to ReadStream::eos into SubReadStream::eos.

fuzzie pointed out that in certain cases this resulted in a lot of eos calls
before. Those were rather needlessly, since checking the eos bit of the
decorated stream in read does not give any advantage over checking it when
the client code really wants to test the eos flag.
2011-04-19 18:08:47 +02:00
Max Horn ae919f3ebd COMMON: Remove XOR decoding capability from MemoryReadStream
svn-id: r54436
2010-11-23 22:25:53 +00:00
Max Horn 2180b2d6b5 COMMON: Split common/stream.h into several headers
svn-id: r54385
2010-11-19 17:03:07 +00:00
Max Horn 9fb1e2b17e COMMON: Change wrapBufferedWriteStream() to always disposes wrapped stream
This is the only we need right now, and it saves a few bytes per
instance. The template approach I used before has the drawback that it
increases the binary size, which negates the benefit. Thanks to LordHoto
for pointing this out.

svn-id: r54344
2010-11-18 20:27:15 +00:00
Max Horn a9dcb11c54 COMMON: Turn BufferedWriteStream into a template class, with disposeParentStream as param
svn-id: r54336
2010-11-18 17:56:21 +00:00
Max Horn 152e52d015 COMMON: Make implementation of Buffered*Stream classes internal
svn-id: r54326
2010-11-18 17:02:51 +00:00
Max Horn 4707b610fc COMMON: Fix incorrect use of assert() macro
The assert() macro may be compiled to be empty. In that case, its
arguments are *NOT* evaluated. Hence, things like
  assert(doSomething())
must not be used whenever doSomething() has important side effects.

Also document BufferedWriteStream::flushBuffer() and explain why it
exists parallel to BufferedWriteStream::flush().

svn-id: r54322
2010-11-18 16:08:56 +00:00
Jordi Vilalta Prat 8388e0dfea JANITORAL: Clean trailing whitespaces.
svn-id: r53160
2010-10-12 02:18:11 +00:00
Yotam Barnoy 94b41f5d2e COMMON: remove virtual functions from BufferedStreams
As Max pointed out to me, they don't work as expected when called from constructors/destructors.

svn-id: r52724
2010-09-14 14:57:30 +00:00
Willem Jan Palenstijn 05c2cc4d1d COMMON: Fix eos handling in BufferedReadStream
This makes it pass the test added in r52382.

svn-id: r52389
2010-08-25 14:43:42 +00:00
Yotam Barnoy 4368d3c574 COMMON: fixed EOS handling in BufferedReadStream and BufferedSeekableReadStream
EOS problem was causing Discworld to crash and zip files not to load on the PSP.

svn-id: r52377
2010-08-25 09:14:41 +00:00
Yotam Barnoy efdbb076a2 COMMON: implemented BufferedWriteStream and fixed bug in BufferedReadStream
I need the write buffering for the new version of the PSP streams and thought the simplest way to implement it would be along the lines of BufferedReadStream. Sadly, I found a nasty little bug in BRS but that's taken care of.
Also, I adapted these streams for target-specific memory allocation by using virtual functions for allocation/deallocation.

svn-id: r52325
2010-08-24 11:18:48 +00:00