I just noticed the typo in the commit message in my latest update. Sorry about that. Junio, would you be willing to fix it up whenever you queue the patch? Or would you like me to send another update. Thanks Garima G Singh On 10/7/2019 12:17 PM, Garima Singh via GitGitGadget wrote: > From: Garima Singh <garima.singh@xxxxxxxxxxxxx> > > The sq_quote_buf_pretty() function does not emit anything > when the incoming string is empty, but the function is to > accumulate command line arguments, properly quoted as > necessary, and the right way to add an argument that is an > empty string is to show it quoted, i.e. ''. We warn the caller > with the BUG macro is they pass in a NULL. > > Reported by: Junio Hamano <gitster@xxxxxxxxx> > Signed-off-by: Garima Singh <garima.singh@xxxxxxxxxxxxx> > --- > quote.c | 10 ++++++++++ > t/t0014-alias.sh | 7 +++++++ > 2 files changed, 17 insertions(+) > > diff --git a/quote.c b/quote.c > index 7f2aa6faa4..f31ebf6c43 100644 > --- a/quote.c > +++ b/quote.c > @@ -48,6 +48,16 @@ void sq_quote_buf_pretty(struct strbuf *dst, const char *src) > static const char ok_punct[] = "+,-./:=@_^"; > const char *p; > > + /* In case of null tokens, warn the user of the BUG in their call. */ > + if (!src) > + BUG("Cannot append a NULL token to the buffer"); > + > + /* Avoid dropping a zero-length token by adding '' */ > + if (!*src) { > + strbuf_addstr(dst, "''"); > + return; > + } > + > for (p = src; *p; p++) { > if (!isalpha(*p) && !isdigit(*p) && !strchr(ok_punct, *p)) { > sq_quote_buf(dst, src); > diff --git a/t/t0014-alias.sh b/t/t0014-alias.sh > index a070e645d7..ae316aa6fd 100755 > --- a/t/t0014-alias.sh > +++ b/t/t0014-alias.sh > @@ -37,4 +37,11 @@ test_expect_success 'looping aliases - internal execution' ' > # test_i18ngrep "^fatal: alias loop detected: expansion of" output > #' > > +test_expect_success 'run-command parses empty args properly, using sq_quote_buf_pretty' ' > + GIT_TRACE=1 git frotz a "" b " " c 2>&1 | > + sed -ne "/run_command:/s/.*trace: run_command: //p" >actual && > + echo "git-frotz a '\'''\'' b '\'' '\'' c" >expect && > + test_cmp expect actual > +' > + > test_done >