# HG changeset patch # User Kyle Lippincott # Date 1568758165 25200 # Node ID d6227c6c0814cf2c07b87d6019717f5b11ce7b2b # Parent 460f8bf58020a67b4c2e37449661c1b7ae93a25c osutil: tolerate Py_GetArgcArgv not being set up properly Differential Revision: https://phab.mercurial-scm.org/D6866 diff -r 460f8bf58020 -r d6227c6c0814 mercurial/cext/osutil.c --- a/mercurial/cext/osutil.c Tue Sep 17 14:57:42 2019 -0700 +++ b/mercurial/cext/osutil.c Tue Sep 17 15:09:25 2019 -0700 @@ -798,10 +798,17 @@ char *argvend; extern void Py_GetArgcArgv(int *argc, char ***argv); Py_GetArgcArgv(&argc, &argv); + /* Py_GetArgcArgv may not do much if a custom python + * launcher is used that doesn't record the information + * it needs. Let's handle this gracefully instead of + * segfaulting. */ + if (argv != NULL) + argvend = argvstart = argv[0]; + else + argvend = argvstart = NULL; /* Check the memory we can use. Typically, argv[i] and * argv[i + 1] are continuous. */ - argvend = argvstart = argv[0]; for (i = 0; i < argc; ++i) { if (argv[i] > argvend || argv[i] < argvstart) break; /* not continuous */