Re: [PATCH 1/2] gettext API users: correct use of casts for Q_()
- From
Derrick Stolee <derrickstolee@github.com>
- Date
- Mar 7, 2022, 13:41 UTC
- Message-ID
- <a34c37c0-b6fd-9f4f-e990-9869f375937e@github.com>
- In-Reply-To
- <patch-1.2-83659fbc459-20220307T113707Z-avarab@gmail.com>
On 3/7/2022 6:38 AM, Ævar Arnfjörð Bjarmason wrote:
Show 13 quoted lines
> Change users of the inline gettext.h Q_() function to cast its > argument to "unsigned long" instead of "int" or "unsigned int". > > The ngettext() function (which Q_() resolves to) takes an "unsigned > long int", and so does our Q_() wrapper for it, see 0c9ea33b90f (i18n: > add stub Q_() wrapper for ngettext, 2011-03-09). > > In a subsequent commit we'll be making more use of this pattern of: > > func(Q_(..%"PRIuMAX..., (unsigned long)x), (uintmax_t)x); > > By making this change we ensure that this case isn't the odd one out > in that post-image.
Show 6 quoted lines
> if (!res)
> - printf(Q_("updated %d path\n",
> - "updated %d paths\n", count), (int)count);
> + printf(Q_("updated %"PRIuMAX" path\n",
> + "updated %"PRIuMAX" paths\n", (unsigned long)count),
> + (uintmax_t)count);Why are we adding more uses of "unsigned long" which is not consistent in its size across 64-bit Linux and 64-bit Windows? Specifically, on Windows "unsigned long" is _not_ uintmax_t. Shouldn't we be using uintmax_t everywhere instead?
Thanks, -Stolee