<feed xmlns='http://www.w3.org/2005/Atom'>
<title>dolphin/Source/Core/DiscIO/WIABlob.cpp, branch release-prep-2506a</title>
<subtitle>GameCube and Wii emulator</subtitle>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/'/>
<entry>
<title>DiscIO: Pass parameters by constant reference</title>
<updated>2025-04-20T06:26:09+00:00</updated>
<author>
<name>Dr. Dystopia</name>
<email>jonis9898@hotmail.com</email>
</author>
<published>2025-04-19T20:40:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=07ad189b4fdf94d1c8d04ce0f34e3fc2798b85c0'/>
<id>07ad189b4fdf94d1c8d04ce0f34e3fc2798b85c0</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Modernize `std::sort` with ranges and projections</title>
<updated>2025-03-09T20:26:38+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-09-29T18:19:33+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=8b9f92a0af0f467ffa0bde5f4e6239e57fbd4b5e'/>
<id>8b9f92a0af0f467ffa0bde5f4e6239e57fbd4b5e</id>
<content type='text'>
In PPCTables.cpp, the code is currently unused so I was unable to test it.

In CustomPipeline.cpp, a pointer to member function cannot be used due to 16.4.5.2.1 of the C++ Standard regarding "addressable functions". https://eel.is/c++draft/namespace.std#6

In Fs.cpp and DirectoryBlob.cpp, these examples used projections in a previous iteration of this commit, but no longer do. Still, they remain in this commit because the PR they would actually belong to is already merged.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In PPCTables.cpp, the code is currently unused so I was unable to test it.

In CustomPipeline.cpp, a pointer to member function cannot be used due to 16.4.5.2.1 of the C++ Standard regarding "addressable functions". https://eel.is/c++draft/namespace.std#6

In Fs.cpp and DirectoryBlob.cpp, these examples used projections in a previous iteration of this commit, but no longer do. Still, they remain in this commit because the PR they would actually belong to is already merged.
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify `std::find_if` with `std::ranges::find` and projections</title>
<updated>2025-03-09T20:26:35+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-09-21T21:43:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=62b2b939b5825e48c89b8a3ebb97d9fc38cb59e5'/>
<id>62b2b939b5825e48c89b8a3ebb97d9fc38cb59e5</id>
<content type='text'>
In LabelMap.cpp, the code is currently unused so I was unable to test it.

In WiiUtils.cpp, the magic value `1u` was replaced by the constant value `DiscIO::PARTITION_UPDATE`.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In LabelMap.cpp, the code is currently unused so I was unable to test it.

In WiiUtils.cpp, the magic value `1u` was replaced by the constant value `DiscIO::PARTITION_UPDATE`.
</pre>
</div>
</content>
</entry>
<entry>
<title>Modernize `std::all_of` with ranges</title>
<updated>2024-12-16T03:50:34+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-09-29T18:43:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=860e6cf5cb7d96499aecf6f6067783bdb71c29ad'/>
<id>860e6cf5cb7d96499aecf6f6067783bdb71c29ad</id>
<content type='text'>
In DITSpecification.cpp, MaterialAsset.cpp, and ShaderAsset.cpp, lambda predicates were replaced by pointers to member functions because ranges algorithms are able invoke those.

In NetPlayClient.cpp, the non-trivial `NetPlay::Player` elements were being passed by value in `NetPlayClient::DoAllPlayersHaveGame()`. This has been fixed.

In WIABlob.cpp, the second example's predicate was returning the `std::optional` by value instead of implicitly converting it to a bool. This has been fixed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
In DITSpecification.cpp, MaterialAsset.cpp, and ShaderAsset.cpp, lambda predicates were replaced by pointers to member functions because ranges algorithms are able invoke those.

In NetPlayClient.cpp, the non-trivial `NetPlay::Player` elements were being passed by value in `NetPlayClient::DoAllPlayersHaveGame()`. This has been fixed.

In WIABlob.cpp, the second example's predicate was returning the `std::optional` by value instead of implicitly converting it to a bool. This has been fixed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Simplify `std::copy` with `std::copy_n`</title>
<updated>2024-10-07T22:34:56+00:00</updated>
<author>
<name>mitaclaw</name>
<email>140017135+mitaclaw@users.noreply.github.com</email>
</author>
<published>2024-09-28T22:37:09+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=7c96762f5f4cf5d9952fbf4093a4173f0ced989a'/>
<id>7c96762f5f4cf5d9952fbf4093a4173f0ced989a</id>
<content type='text'>
+ a surprise `std::memcpy` in VolumeVerifier.cpp.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
+ a surprise `std::memcpy` in VolumeVerifier.cpp.
</pre>
</div>
</content>
</entry>
<entry>
<title>DiscIO: Fix a typo in an RVZPack comment</title>
<updated>2024-09-08T10:38:10+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2024-09-08T10:38:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=e72b23df91545d9f3135c6aa0597d34d3c3158d7'/>
<id>e72b23df91545d9f3135c6aa0597d34d3c3158d7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>RVZ: Fix undefined behaviour when copying 0 bytes to a null pointer</title>
<updated>2024-08-27T16:16:43+00:00</updated>
<author>
<name>Ferdinand Bachmann</name>
<email>ferdinand.bachmann@yrlf.at</email>
</author>
<published>2024-08-27T15:59:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=6245dcd57d3cb78aa1d9fdbf53832716478396ca'/>
<id>6245dcd57d3cb78aa1d9fdbf53832716478396ca</id>
<content type='text'>
A vector of length 0 can have a null data pointer, which causes UB when
passed to memcpy, so only copy when we actually have data to copy. This
caused crashes in certain cases when compiling Dolphin with Clang and
LTO enabled.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A vector of length 0 can have a null data pointer, which causes UB when
passed to memcpy, so only copy when we actually have data to copy. This
caused crashes in certain cases when compiling Dolphin with Clang and
LTO enabled.
</pre>
</div>
</content>
</entry>
<entry>
<title>Remove redundant semicolons</title>
<updated>2024-08-20T12:59:54+00:00</updated>
<author>
<name>Dr. Dystopia</name>
<email>jonis9898@hotmail.com</email>
</author>
<published>2024-08-18T13:08:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=9602f36248edec803275128a0a327e3355f9472d'/>
<id>9602f36248edec803275128a0a327e3355f9472d</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Added CopyReader to BlobReader and all subclasses</title>
<updated>2023-10-01T13:04:06+00:00</updated>
<author>
<name>LillyJadeKatrin</name>
<email>lilly.kitty.1988@gmail.com</email>
</author>
<published>2023-07-07T12:31:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=335cf4f2db4160ebbf387aeb19dc637182c91c5a'/>
<id>335cf4f2db4160ebbf387aeb19dc637182c91c5a</id>
<content type='text'>
A deep-copy method CopyReader has been added to BlobReader (virtual) and all of its subclasses (override). This should create a second BlobReader to open the same set of data but with an independent read pointer so that it doesn't interfere with any reads done on the original Reader.

As part of this, IOFile has added code to create a deep copy IOFile pointer onto the same file, with code based on the platform in question to find the file ID from the file pointer and open a new one. There has also been a small piece added to FileInfo to enable a deep copy, but its only subclass at this time already had a copy constructor so this was relatively minor.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
A deep-copy method CopyReader has been added to BlobReader (virtual) and all of its subclasses (override). This should create a second BlobReader to open the same set of data but with an independent read pointer so that it doesn't interfere with any reads done on the original Reader.

As part of this, IOFile has added code to create a deep copy IOFile pointer onto the same file, with code based on the platform in question to find the file ID from the file pointer and open a new one. There has also been a small piece added to FileInfo to enable a deep copy, but its only subclass at this time already had a copy constructor so this was relatively minor.
</pre>
</div>
</content>
</entry>
<entry>
<title>DiscIO: Improve comments in WIARVZFileReader::Convert</title>
<updated>2023-05-16T16:58:07+00:00</updated>
<author>
<name>JosJuice</name>
<email>josjuice@gmail.com</email>
</author>
<published>2023-05-16T16:58:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.dog6.net/dolphin/commit/?id=192081d2f1a9c7e139828847f8c882499197b870'/>
<id>192081d2f1a9c7e139828847f8c882499197b870</id>
<content type='text'>
Just some clarifications and typo fixes.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Just some clarifications and typo fixes.
</pre>
</div>
</content>
</entry>
</feed>
