return failure when an alloc function fails

This commit is contained in:
Daniel Stenberg 2003-08-14 15:01:20 +00:00
parent 3454319c17
commit e6011e33a6

View File

@ -258,6 +258,8 @@ static GlobCode glob_word(URLGlob *glob, char *pattern, int pos, int *amount)
litindex = glob->size / 2; litindex = glob->size / 2;
/* literals 0,1,2,... correspond to size=0,2,4,... */ /* literals 0,1,2,... correspond to size=0,2,4,... */
glob->literal[litindex] = strdup(glob->glob_buffer); glob->literal[litindex] = strdup(glob->glob_buffer);
if(!glob->literal[litindex])
return GLOB_ERROR;
++glob->size; ++glob->size;
switch (*pattern) { switch (*pattern) {
@ -334,9 +336,12 @@ void glob_cleanup(URLGlob* glob)
for (i = glob->size - 1; i >= 0; --i) { for (i = glob->size - 1; i >= 0; --i) {
if (!(i & 1)) { /* even indexes contain literals */ if (!(i & 1)) { /* even indexes contain literals */
free(glob->literal[i/2]); free(glob->literal[i/2]);
} else { /* odd indexes contain sets or ranges */ }
else { /* odd indexes contain sets or ranges */
if (glob->pattern[i/2].type == UPTSet) { if (glob->pattern[i/2].type == UPTSet) {
for (elem = glob->pattern[i/2].content.Set.size - 1; elem >= 0; --elem) { for (elem = glob->pattern[i/2].content.Set.size - 1;
elem >= 0;
--elem) {
free(glob->pattern[i/2].content.Set.elements[elem]); free(glob->pattern[i/2].content.Set.elements[elem]);
} }
free(glob->pattern[i/2].content.Set.elements); free(glob->pattern[i/2].content.Set.elements);
@ -410,7 +415,8 @@ char *glob_next_url(URLGlob *glob)
*buf++ = pat->content.CharRange.ptr_c; *buf++ = pat->content.CharRange.ptr_c;
break; break;
case UPTNumRange: case UPTNumRange:
sprintf(buf, "%0*d", pat->content.NumRange.padlength, pat->content.NumRange.ptr_n); sprintf(buf, "%0*d",
pat->content.NumRange.padlength, pat->content.NumRange.ptr_n);
buf += strlen(buf); /* make no sprint() return code assumptions */ buf += strlen(buf); /* make no sprint() return code assumptions */
break; break;
default: default: