Hi Pádraig,

Pádraig Brady <p...@draigbrady.com> writes:

> I'll apply the attached sometime tomorrow.
>
> Marking this as done.

Patch looks good, thanks.

One small comment, though.

> +#define GET_CURR_ARG(POS)                            \
> +do {                                                 \
> +  char *arge;                                                \
> +  intmax_t arg = POS==3 ? 0 : strtoimax (f, &arge, 10);      \
> +  if (0 < arg && arg <= INT_MAX && *arge == '$')     \
> +    /* Process indexed %i$ format.  */                       \
> +    /* Note '$' comes before any flags.  */          \

Shouldn't you check errno here, like:

  char *arge;
  errno = 0;
  intmax_t arg = POS==3 ? 0 : strtoimax (f, &arge, 10);
  if (errno == 0 && 0 < arg && arg <= INT_MAX && *arge == '$')
  [...]

I think that would handle all bad cases.

For example, I think "%$" might return 0 but set errno to EINVAL.

Collin



Reply via email to