@matheusbsbs / matheus-bagliano / commits / ac78b00939
Fork 0

ls-files: die instead of fprintf/exit in -i error

When ls-files was called with -i but no exclude pattern, it was calling fprintf(stderr, "...", NULL) and then exiting. On Solaris, passing NULL into fprintf was causing a segfault. On glibc systems, it was simply producing incorrect output (eg: "(null)": ...). The NULL pointer was a result of argv[0] not being preserved by the option parser. Instead of requesting that the option parser preserve argv[0], use die() with a constant string. A trigger for this bug was: `git ls-files -i` Signed-off-by: Ben Walton <bwalton@artsci.utoronto.ca> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Ben Walton committed Oct 8, 2009 at 21:53 UTC ac78b009398f8cab1f57d1ef62db21ac95e11ed1
1 file changed +2 -5
builtin-ls-files.c
+2 -5
@@ -524,11 +524,8 @@ int cmd_ls_files(int argc, const char **argv, const char *prefix)
524 ps_matched = xcalloc(1, num);
525 }
526
527 - if ((dir.flags & DIR_SHOW_IGNORED) && !exc_given) {
528 - fprintf(stderr, "%s: --ignored needs some exclude pattern\n",
529 - argv[0]);
530 - exit(1);
531 - }
527 + if ((dir.flags & DIR_SHOW_IGNORED) && !exc_given)
528 + die("ls-files --ignored needs some exclude pattern");
529
530 /* With no flags, we default to showing the cached files */
531 if (!(show_stage | show_deleted | show_others | show_unmerged |