diff --git a/imageInput.c b/imageInput.c index cb7b68e..4917d71 100644 --- a/imageInput.c +++ b/imageInput.c @@ -95,14 +95,25 @@ GrayScaleImageSeries *readImages(const char *path) series->labels = malloc(numImages * sizeof(unsigned char)); //Prüfen, ob der Speicher reserviert werden konnte - if(!series->images || !series->labels){ + for(unsigned int i = 0; i < numImages; i++){ + + series -> images[i].buffer = malloc(width * height); + + if(series->images[i].buffer == NULL){ + + for(unsigned int j = 0; j < i; j++){ + free(series->images[j].buffer); + } + free(series->images); //wenn trotzdem was reingeschrieben wurde, dann freigeben free(series->labels); free(series); + fclose(fp); return NULL; - series -> images[i].buffer = malloc(width * height); + + } } for(int i = 0; i < numImages; i++)