diff -ur popt-20020315~/popt.c popt-20020315/popt.c --- popt-20020315~/popt.c Fri Mar 15 09:29:44 2002 +++ popt-20020315/popt.c Mon Mar 25 14:01:51 2002 @@ -153,6 +153,8 @@ if (con == NULL) return NULL; /* XXX can't happen */ memset(con, 0, sizeof(*con)); + if ( argc < 1 ) return NULL; + con->os = con->optionStack; con->os->argc = argc; /*@-dependenttrans -assignexpose@*/ /* FIX: W2DO? */ @@ -174,6 +176,7 @@ con->numExecs = 0; con->finalArgvAlloced = argc * 2; con->finalArgv = calloc( con->finalArgvAlloced, sizeof(*con->finalArgv) ); + if ( !con->finalArgv ) con->finalArgvAlloced = 0; /* XXX can't happen? */ con->execAbsolute = 1; con->arg_strip = NULL; @@ -273,6 +276,7 @@ con->finalArgvAlloced += 10; con->finalArgv = realloc(con->finalArgv, sizeof(*con->finalArgv) * con->finalArgvAlloced); + if ( !con->finalArgv ) con->finalArgvCount = con->finalArgvAlloced = 0; /* XXX can't happen? */ } i = con->finalArgvCount++; @@ -569,6 +573,7 @@ tn += alen; *te = '\0'; t = realloc(t, tn); + if ( !t ) return NULL; /* XXX can't happen? */ te = t + strlen(t); strncpy(te, a, alen); te += alen; continue; @@ -933,6 +938,7 @@ con->finalArgvAlloced += 10; con->finalArgv = realloc(con->finalArgv, sizeof(*con->finalArgv) * con->finalArgvAlloced); + if ( !con->finalArgv ) con->finalArgvCount = con->finalArgvAlloced = 0; /* XXX can't happen? */ } if (con->finalArgv != NULL)