xalloc is now called with a size_t argument. If the argument type is
silently changed to an idx_t, existing code which calls the new xalloc
still with a size_t argument will trigger a compiler warning under GCC's
-Wsign-conversion.

Fixing existing code isn't easy because the sizeof operator returns a
size_t, which somehow would have to be converted to an idx_t without
triggering any compiler warnings.

The coexistence of size_t and idx_t is problematic. If we want to drop
size_t somewhere, we have to drop it everywhere it seems. This includes
providing a signed sizeof operator and modules like flexmember may have to
revisited as well.

Marc

Am Mi., 7. Apr. 2021 um 23:01 Uhr schrieb Bruno Haible <br...@clisp.org>:

> Hi Paul,
>
> > I am planning to make xalloc.h use idx_t rather than size_t for object
> > and byte counts, as we really should be using signed integers there, for
> > all the usual reasons.
>
> I agree that using idx_t in more places helps reduce overflow problem.
>
> However, since 'xalloc' started out as "malloc() which can't return NULL",
> this would introduce an inconsistency w.r.t. malloc().
> Could programmers still replace calls to malloc() with calls to xmalloc()
> without thinking, without considering the context?
> And vice versa, when transforming code into library code, can programmers
> still replace calls to xmalloc() with calls to malloc() and a NULL check,
> mechanically?
>
> (I hope the answer is "yes", but maybe I'm overlooking something?)
>
> Bruno
>
>

Reply via email to