X-Git-Url: http://git.ieval.ro/?p=filters.git;a=blobdiff_plain;f=scramble.c;fp=scramble.c;h=a82e5932368c4bac559c856b08a1c2815a71dfad;hp=fc35ff8caefaa3c4d256732b1a0660e4e78ed1a1;hb=dd1b852e97cfac158883a3456a5dea9abbf31297;hpb=7caa7795dc8a2580cd6267b0bd56e3d46527e5d7 diff --git a/scramble.c b/scramble.c index fc35ff8..a82e593 100644 --- a/scramble.c +++ b/scramble.c @@ -120,7 +120,7 @@ char *clear_string(char *string) { int main(int argc, char **argv) { int word_length; - char c, tempchar, *word; + char c, tempchar, *word, *rword; FILE *infile, *outfile; #if ALLOW_FILE_IO @@ -172,12 +172,19 @@ int main(int argc, char **argv) { if(feof(infile)) { printf("Reached EOF while reading the first character of the input file!\n"); + free(word); return 4; } while(!feof(infile)) { if(isalpha(c)) { - word = realloc(word, word_length+2); // one for the new character, one for the null + rword = realloc(word, word_length+2); // one for the new character, one for the null + if(rword == NULL){ + free(word); + fprintf(stderr, "Unable to allocate memory\n"); + return 5; + } + word = rword; word[word_length] = c; word[word_length + 1] = '\0'; // duplicate addition with the next line, but possibly more readable word_length++;