Age | Commit message (Collapse) | Author |
|
luxembourgish: 17 changes by Phreeze
spanish (mexican): 2 changes by njn
|
|
In particular this crash can be observed when using the
bootstrap GUI to download the base graphics.
In ClientNetworkContentSocketHandler::OnReceiveContentInfo
ClientNetworkContentSocketHandler::callbacks is iterated, using an iterator
cb->OnReceiveContentInfo() is called (cb is of type BootstrapAskForDownloadWindow)
This calls new BootstrapContentDownloadStatusWindow()
This inherits from BaseNetworkContentDownloadStatusWindow
The constructor of which calls _network_content_client.AddCallback(this)
This reallocates the std::vector which is being iterated in ClientNetworkContentSocketHandler::OnReceiveContentInfo
This results in iter being invalid, and an assertion failure occurs shortly
afterwards due to its use in the next iteration of cb->OnReceiveContentInfo()
Adjust all locations where ClientNetworkContentSocketHandler::callbacks
is iterated to avoid problematic behaviour
|
|
The last use was for storing a list of memory blocks. As the way these lists are accessed is very
specific, it is easier to just write an explicit destructor instead of trying to exactly match the behaviour.
|
|
instead of an AutoFreeSmallVector.
|
|
AutoDeleteSmallVector obsolete.
DropDownListItem are strongly managed using std::unique_ptr to ensure leak-free handling. Appropriate use
of move-semantics make intent a lot clearer than parameter comments and allows the compiler to generate
copy-free code for most situations.
|
|
handling.
|
|
text layout code.
|
|
instead of heap allocated.
This reduces memory allocations and heap fragmentation.
|
|
|
|
|
|
The raw_strings vector may not include NULLs as no consumer can deal with it.
|
|
luxembourgish: 20 changes by Phreeze
|
|
|
|
tile
|
|
|
|
|
|
|
|
|
|
We assume a conforming C++11 compiler environment that has a valid <thread>-header.
Failure to run a real thread is handled gracefully.
|
|
A conforming compiler with a valid <mutex>-header is expected.
Most parts of the code assume that locking a mutex will never fail unexpectedly,
which is generally true on all common platforms that don't just pretend to
be C++11. The use of condition variables in driver code is checked.
|
|
|
|
|
|
|
|
french: 3 changes by glx
croatian: 17 changes by VoyagerOne
|
|
|
|
dutch: 2 changes by JanWillem
french: 19 changes by glx
|
|
english (us): 3 changes by Supercheese
spanish (mexican): 18 changes by Absay
hungarian: 2 changes by Brumi
latin: 33 changes by Supercheese
|
|
|
|
It is skipped when NPF is in use.
It is trivial to work around by adding and removing dummy orders.
It is mostly alleviated by the ship path cache in YAPF.
|
|
pathfinding.
|
|
|
|
In the autoreplace window, the rail type drop down is for choosing engines
of the given time. Many rail types do not have engines specifically designed for them,
and are merely compatible with other rail types. This list is thus unwieldy and many
options have no engines available.
As this drop down is for choosing _engine_ rail type rather than compatible rail types,
we can list just the rail types explicitly listed by engines.
|
|
iterating tiles. (#7429)
|
|
references. (#7431)
Linkgraph nodes require a specific order that was maintained by swapping just the last
element for the node to be removed. std::vector::erase() changed this to removing the
node is then shuffling the remain items down, which upsets other references to this
indices.
This is fixed by switching back to the original swap & pop method.
|
|
legibility against darker blue of sea introduced by #7436
|
|
|
|
|
|
|
|
|
|
italian: 25 changes by lorenzodv
portuguese: 3 changes by JayCity
|
|
|
|
korean: 14 changes by telk5093
|
|
so use it. (#7427)
Previously the distance was thrown away, only to be expensively recalculated again.
|
|
|
|
|
|
luxembourgish: 29 changes by Phreeze
russian: 2 changes by Lone_Wolf
latin: 4 changes by Supercheese
portuguese: 1 change by JayCity
|
|
Const and non-const Find() have different return types.
|
|
|
|
Display of industry production around tiles (as shown when placing a station)
did not take account of the station catchment changes, so still showed production
from an industry even if it was not covered by a tile.
This is fixed by making a set of nearby industries that are covered, instead of
looping over all possible industries.
|
|
|