On 1/26/2019 7:35 PM, Nguyễn Thái Ngọc Duy wrote: > @@ -238,7 +249,10 @@ static enum parse_opt_result parse_short_opt(struct parse_opt_ctx_t *p, > len++; > arg = xmemdupz(p->opt, len); > p->opt = p->opt[len] ? p->opt + len : NULL; > - rc = (*numopt->callback)(numopt, arg, 0) ? (-1) : 0; > + if (numopt->callback) > + rc = (*numopt->callback)(numopt, arg, 0) ? (-1) : 0; > + else > + rc = (*numopt->ll_callback)(p, numopt, arg, 0); > free(arg); > return rc; > } Hi Duy, This "else" condition is unreachable. This block is only hit when we have a "-<n>" option, using OPT_NUMBER_CALLBACK, which is implemented by filling "callback", never "ll_callback". I recommend reverting this diff segment, but please let me know if I'm missing something. Thanks, -Stolee