Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Codechange: Use std::optional for town parent scope resolver. #12530

Merged
merged 1 commit into from Apr 18, 2024

Conversation

PeterN
Copy link
Member

@PeterN PeterN commented Apr 18, 2024

Motivation / Problem

When resolving NewGRF, the parent town_scope is lazily initialised as it does not always need to be used.

But it uses a raw pointer so requires manual management with new/delete. Airports tried to use a unique_ptr, but still used new instead of make_unique.

Description

As TownScopeResolver is not large, replace the manually managed pointer with std::optional to simplify it.

Using std::optional also avoids extra memory allocation.

Limitations

Checklist for review

Some things are not automated, and forgotten often. This list is a reminder for the reviewers.

  • The bug fix is important enough to be backported? (label: 'backport requested')
  • This PR touches english.txt or translations? Check the guidelines
  • This PR affects the save game format? (label 'savegame upgrade')
  • This PR affects the GS/AI API? (label 'needs review: Script API')
    • ai_changelog.hpp, game_changelog.hpp need updating.
    • The compatibility wrappers (compat_*.nut) need updating.
  • This PR affects the NewGRF API? (label 'needs review: NewGRF')

When resolving NewGRF, the parent town_scope is lazily initialised as it does not always need to be used.

Replace the manually managed pointer with std::optional to simplify. Using std::optional avoids extra memory allocation.
@PeterN PeterN merged commit 774f811 into OpenTTD:master Apr 18, 2024
14 checks passed
@PeterN PeterN deleted the town-scope-resolver branch April 18, 2024 21:14
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants