This changes some unchecked std::string format strings to use string literals, which are consteval checked at compile-time.
Split out, because it is used in several pull requests.
This changes some unchecked std::string format strings to use string literals, which are consteval checked at compile-time.
Split out, because it is used in several pull requests.
Pass literal format strings instead of std::string so formats can be
checked at compile time.
Co-authored-by: Ryan Ofsky <ryan@ofsky.org>
Co-authored-by: stickies-v <stickies-v@protonmail.com>
<!--e57a25ab6845829454e8d69fc972939a-->
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.
<!--006a51241073e994b41acfe9ec718e94-->
For details see: https://corecheck.dev/bitcoin/bitcoin/pulls/31287.
<!--021abf342d371248e50ceaed478a90ca-->
See the guideline for information on the review process.
If your review is incorrectly listed, please react with š to this comment and the bot will ignore it on the next update.
1896 | @@ -1897,7 +1897,7 @@ CWallet::ScanResult CWallet::ScanForWalletTransactions(const uint256& start_bloc 1897 | fast_rescan_filter ? "fast variant using block filters" : "slow variant inspecting all blocks"); 1898 | 1899 | fAbortRescan = false; 1900 | - ShowProgress(strprintf("%s " + _("Rescanningā¦").translated, GetDisplayName()), 0); // show rescan progress in GUI as dialog or on splashscreen, if rescan required on startup (e.g. due to corruption) 1901 | + ShowProgress(strprintf("%s %s", GetDisplayName(), _("Rescanningā¦").translated), 0); // show rescan progress in GUI as dialog or on splashscreen, if rescan required on startup (e.g. due to corruption)
It seems unnecessary to use strprintf at all just to concatenate two strings and a space š
Edit: oh, it's a number, never mind.
Edit.2: wait, no, it isn't, the 0 is another argument to ShowProgress. AHH.
re: #31287 (review)
I think this confusion only backs up the original comment that:
ShowProgress(GetDisplayName() + " " + _("Rescanningā¦").translated, 0);
is clearer than:
ShowProgress(strprintf("%s %s", GetDisplayName(), _("Rescanningā¦").translated), 0);
I'll leave as-is for now. I think both are fine.
ACK fa1177e3d7ca9ef003ded4d0c915fa6dc22bd37d
code review and light test ACK fa1177e3d7ca9ef003ded4d0c915fa6dc22bd37d
Quick checks:
-printpriority description with bitcoind -help -help-debugtxrequest_tests to see the string.tACK fa1177e3d7ca9ef003ded4d0c915fa6dc22bd37d
Make and unit tests successful. Checked the printpriority arg message in help.
-printpriority
Log transaction fee rate in BTC/kvB when mining blocks (default: 0)
1911 | @@ -1912,7 +1912,7 @@ CWallet::ScanResult CWallet::ScanForWalletTransactions(const uint256& start_bloc 1912 | m_scanning_progress = 0; 1913 | } 1914 | if (block_height % 100 == 0 && progress_end - progress_begin > 0.0) { 1915 | - ShowProgress(strprintf("%s " + _("Rescanningā¦").translated, GetDisplayName()), std::max(1, std::min(99, (int)(m_scanning_progress * 100)))); 1916 | + ShowProgress(strprintf("%s %s", GetDisplayName(), _("Rescanningā¦").translated), std::max(1, std::min(99, (int)(m_scanning_progress * 100))));
In commit "refactor: Avoid std::string format strings" (fa1177e3d7ca9ef003ded4d0c915fa6dc22bd37d)
Note: Precedes this PR, but there appears to be mixed translation bugs in all the wallet code changed here. GetDisplayName() can return the english string "[default wallet]" while "Rescanning" is translated. This might become a non-issue after the legacy wallet removal where (I'm assuming) unnamed wallets will finally get names? I think having more type safety to make it harder to accidentally combine translated and untranslated strings would be good thing in general, though.
Maybe a follow-up can fix this, so that this remains a refactor?
Maybe a follow-up can fix this, so that this remains a refactor?
Thanks, I experimented with various ways to clean up this show progress code, and I think it would probably be best if the string formatting was done in the GUI. This would require interface class changes we probably want anyway, but would be a bigger change. For now just went with a simple bugfix translating "default wallet" to match the rest of the string in #31296
Code review ACK fa1177e3d7ca9ef003ded4d0c915fa6dc22bd37d
I think I'll merge this PR shortly so we can make progress on related PRs #31061 and #31072, but you can let me know if you would prefer this not to be merged now in case you want to address the comment that using strprintf("%s %s", ...) instead of + makes code more confusing
Milestone
29.0