1
0
mirror of https://github.com/cc65/cc65.git synced 2024-05-28 00:48:27 +00:00

Fixed a comparison operator; so that the NULL at the end of argv[] is copied by InitCmdLine().

Most POSIX function libraries hid that long-time bug by putting zeroes in their dynamic RAM; but, MinGW's library doesn't do it.  Therefore, a command like
cl65 foo.c -l
would crash with a "Segmentation fault" -- it should give a nice error message about "-l"; and, quit neatly.
This commit is contained in:
Greg King 2015-08-30 05:16:38 -04:00
parent a468a2e109
commit a132bc4b28
2 changed files with 4 additions and 4 deletions

View File

@ -161,7 +161,7 @@ static void ExpandFile (CmdLine* L, const char* Name)
void InitCmdLine (int* aArgCount, char** aArgVec[], const char* aProgName)
void InitCmdLine (int* aArgCount, char*** aArgVec, const char* aProgName)
/* Initialize command line parsing. aArgVec is the argument array terminated by
** a NULL pointer (as usual), ArgCount is the number of valid arguments in the
** array. Both arguments are remembered in static storage.
@ -171,7 +171,7 @@ void InitCmdLine (int* aArgCount, char** aArgVec[], const char* aProgName)
int I;
/* Get the program name from argv[0] but strip a path */
if (*(aArgVec)[0] == 0) {
if ((*aArgVec)[0] == 0) {
/* Use the default name given */
ProgName = aProgName;
} else {
@ -190,7 +190,7 @@ void InitCmdLine (int* aArgCount, char** aArgVec[], const char* aProgName)
** special handling for arguments preceeded by the '@' sign - these are
** actually files containing arguments.
*/
for (I = 0; I < *aArgCount; ++I) {
for (I = 0; I <= *aArgCount; ++I) {
/* Get the next argument */
char* Arg = (*aArgVec)[I];

View File

@ -71,7 +71,7 @@ struct LongOpt {
void InitCmdLine (int* aArgCount, char** aArgVec[], const char* aProgName);
void InitCmdLine (int* aArgCount, char*** aArgVec, const char* aProgName);
/* Initialize command line parsing. aArgVec is the argument array terminated by
** a NULL pointer (as usual), ArgCount is the number of valid arguments in the
** array. Both arguments are remembered in static storage.