pager: explicitly cast away strchr() constness
When we do: char *cp = strchr(argv[i], '='); it implicitly removes the constness from argv[i]. We need "cp" to remain writable (since we overwrite it with a NUL). In theory we should be able to drop the const from argv[i], because it is a sub-pointer into our duplicated pager_env variable. But we get it from split_cmdline(), which uses the traditional "const char **" type for argv. This is overly limiting, but changing it would be awkward for all the other callers of split_cmdline(). Let's do an explicit cast with a note about why it is OK. This is enough to silence compiler warnings about the implicit const problems. Signed-off-by: Jeff King <peff@peff.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>maint
parent
eedc7ecc66
commit
031d29d6fb
5
pager.c
5
pager.c
|
|
@ -108,10 +108,11 @@ const char *git_pager(struct repository *r, int stdout_is_tty)
|
||||||
|
|
||||||
static void setup_pager_env(struct strvec *env)
|
static void setup_pager_env(struct strvec *env)
|
||||||
{
|
{
|
||||||
const char **argv;
|
char **argv;
|
||||||
int i;
|
int i;
|
||||||
char *pager_env = xstrdup(PAGER_ENV);
|
char *pager_env = xstrdup(PAGER_ENV);
|
||||||
int n = split_cmdline(pager_env, &argv);
|
/* split_cmdline splits in place, so we know the result is writable */
|
||||||
|
int n = split_cmdline(pager_env, (const char ***)&argv);
|
||||||
|
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
die("malformed build-time PAGER_ENV: %s",
|
die("malformed build-time PAGER_ENV: %s",
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue