miniexpect.c: fix always-true comparison
authorLaszlo Ersek <lersek@redhat.com>
Sun, 11 Sep 2022 12:32:37 +0000 (14:32 +0200)
committerRichard W.M. Jones <rjones@redhat.com>
Tue, 20 Sep 2022 09:08:37 +0000 (10:08 +0100)
commit783db67b0bf0ea3b10e842cbb210870a4947320e
tree8aae2d75946cdf031df04cadd69f1c20b0f086a6
parentf50ad471e49d3fc5d4d896fbd5b6d2be93192671
miniexpect.c: fix always-true comparison

According to <http://www.pcre.org/current/doc/html/pcre2api.html#SEC15>:

> STRING LENGTHS AND OFFSETS
>
> The PCRE2 API uses string lengths and offsets into strings of code units
> in several places. These values are always of type PCRE2_SIZE, which is
> an unsigned integer type, currently always defined as size_t. The
> largest value that can be stored in such a type (that is ~(PCRE2_SIZE)0)
> is reserved as a special indicator for zero-terminated strings and unset
> offsets. Therefore, the longest string that can be handled is one less
> than this maximum.

Therefore check the validity of ovector[1] with

  ovector[1] != ~(PCRE2_SIZE)0

rather than the always-true

  ovector[1] >= 0

This was caught by gcc's

> miniexpect.c:359:45: warning: comparison of unsigned expression in ‘>=
> 0’ is always true [-Wtype-limits]

which is part of "-Wextra".

Signed-off-by: Laszlo Ersek <lersek@redhat.com>
miniexpect.c