From: Japin Li Date: Wed, 22 Jul 2026 11:59:41 +0800 Subject: [PATCH v2 2/2] Fix optind handling inconsistency in getopt_long() for missing argument In the long option error path for a missing required argument, the code previously checked optstring[0] == ':' and returned BADARG immediately without incrementing optind and setting place = EMSG. This left optind and place in an inconsistent state compared to the short option path, where these updates are performed before the check and return. --- src/port/getopt_long.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/port/getopt_long.c b/src/port/getopt_long.c index 20953db9db1..2e869fed58b 100644 --- a/src/port/getopt_long.c +++ b/src/port/getopt_long.c @@ -145,8 +145,12 @@ retry: } else { + optind++; if (optstring[0] == ':') + { + place = EMSG; return BADARG; + } if (opterr && has_arg == required_argument) fprintf(stderr, @@ -154,7 +158,6 @@ retry: argv[0], place); place = EMSG; - optind++; if (has_arg == required_argument) return BADCH; -- 2.53.0 --=-=-=--