Assigning a pointer to std::string appears to only perform a copy and
does not transfer ownership of the pointer, thus the allocated memory is
will never be freed. Use StringBuilder::GetStdString() to avoid the
memory leak.
Assigning a pointer to std::string appears to only perform a copy and
does not transfer ownership of the pointer, thus the allocated memory is
will never be freed.
Implement a method to construct an std::string from a StringBuilder to
avoid memory leaks when retreiving the contents of a StringBuilder and
storing it in a std::string.
Assigning a pointer to std::string appears to only perform a copy and
does not transfer ownership of the pointer, thus the allocated memory is
will never be freed. Use IStream::ReadStdString instead to return a
std::string directly, thus transferring ownership correctly.
It has been reported that Windows Vista crashes in LCMapStringEx when
using LOCALE_NAME_INVARIANT even though it is documented as supported.
As a counter measure, use LOCALE_NAME_USER_DEFAULT for the time being.
When ICU is installed separately from the system and paths configured in
CMake then the detected include directories should also be used for
compilation instead of blindly using unconfigured system includes.
SYSTEM flag ignores suggest-override warnings in ICU headers.
On first launch of the game, OpenRCT2 tries to find Gnome or KDE eyecandy dialog programs zenity and kdialog to inform the user to set the `game_path`. It will fall back to an SDL popup with manual instructions if neither is found, which looks fine. However, if OpenRCT2 is launched from the command line, which will print "file not found" errors if you don't have zenity and/or kdialog installed, which might potentially confuse the user.
This patch routes the error messages to `/dev/null`, as we don't really care if those programs are not found.
See this thread on the OpenBSD mailing list: https://marc.info/?l=openbsd-ports&m=153020454402268&w=2
While OpenRCT2 already had code to look up the Steam path on macOS and Linux, it didn't look in the correct directory. This meant that it wouldn't detect the presence of RCT2, even if the user had downloaded it via the Steam Console.
SDL_GetScancodeName doesn't actually translate the scancode to the physical key, so first we need to convert the scancode to a keycode and then turn the keycode into a string.
Committing some changes that were originally for #7637.
- Refactor map_check_free_elements_and_reorganise
- Refactor map_strip_ghost_flag_from_elements
- Remove sub_68B089
I have removed sub_68B089 because this function was run every game tick
and 1000 times when trying to request some spare elements. It was a
lighter function which tried to stretch out the tile element pointers
behind any spare elements. In this day and age, doing a full tile
element defrag is very fast (even in debug mode it takes no more than
10ms), so I don't think keeping sub_68B089 is necessary.
Clang-format sees the text behind `#pragma region` as code and formats it. Instead of stating the copyright and date there, it's now in the comment block right below it. The text "Copyright" is left in the `#pragma region` line, as clang-format sees it as a single identifier.
I took the opportunity to normalize the dates, and add the copyright notice to the source files where it was missing them (except for third-party and the generated resources.h file).
This adds parentheses around macro arguments that are either negative or used for calculations inside the macro itself. Doing this avoids getting errors in code that may look right.
* Fix#7673: Vehicle names cut in invention list
The string formatting was formatting based on the size of the
pointer to the buffer, not the buffer itself, this truncated all
vehicle names to 8 characters.
* Adjust Long Vehicle Names For Vertical Scrollbar
The ellipsis in long vehicle names were being cut off by
the scrollbar. Reduced the string formatting length by
vertical scrollbar size - 1. The extra 1 is for the fact
that the second column starts + 1 from the middlepoint of the box.
On large loans in the millions (e.g. Alton Towers / BPB), the loan
amount can extend that it runs over the loan spinner widget. This change
enlarges the loan box to allow for large loans.
BannerIndex is defined in common.h (like some other types such as money32 and rct_string_id), so that banner.h wouldn't have to be includede everywhere. Later on, it may be nicer to have a custom types file instead of putting them all in common.h.
At some places, BANNER_NULL and BANNER_INDEX_NULL were mixed, and at one point even MAX_BANNERS, causing the 250th banner to not be initialized properly. This commit makes the uses of those defines correct, and changes all relevant functions to return uint8 instead of sint32.
The colour field in the banner object is also used to store the ride index when a banner is linked to a ride. This commit turns this field into a union with both named fields, to make the code clearer.
It also changes the return types of related functions to uint8 instead of sint32, and makes use of the RIDE_ID_NULL define where applicable.