diff --git a/src/ezconfig0.c b/src/ezconfig0.c index 2e4f599..459f71f 100644 --- a/src/ezconfig0.c +++ b/src/ezconfig0.c @@ -612,56 +612,36 @@ parseConfig(const char *fileName) void freeConfig(EZCONFIG *cfg) { + unsigned int i; + if (cfg == NULL) return; - if (cfg->URL != NULL) - free(cfg->URL); - if (cfg->password != NULL) - free(cfg->password); - if (cfg->format != NULL) - free(cfg->format); - if (cfg->fileName != NULL) - free(cfg->fileName); - if (cfg->metadataProgram != NULL) - free(cfg->metadataProgram); - if (cfg->metadataFormat != NULL) - free(cfg->metadataFormat); - if (cfg->serverName != NULL) - free(cfg->serverName); - if (cfg->serverURL != NULL) - free(cfg->serverURL); - if (cfg->serverGenre != NULL) - free(cfg->serverGenre); - if (cfg->serverDescription != NULL) - free(cfg->serverDescription); - if (cfg->serverBitrate != NULL) - free(cfg->serverBitrate); - if (cfg->serverChannels != NULL) - free(cfg->serverChannels); - if (cfg->serverSamplerate != NULL) - free(cfg->serverSamplerate); - if (cfg->serverQuality != NULL) - free(cfg->serverQuality); - if (cfg->encoderDecoders != NULL) { - unsigned int i; - - for (i = 0; i < MAX_FORMAT_ENCDEC; i++) { - if (cfg->encoderDecoders[i] != NULL) { - if (cfg->encoderDecoders[i]->format != NULL) - free(cfg->encoderDecoders[i]->format); - if (cfg->encoderDecoders[i]->match != NULL) - free(cfg->encoderDecoders[i]->match); - if (cfg->encoderDecoders[i]->encoder != NULL) - free(cfg->encoderDecoders[i]->encoder); - if (cfg->encoderDecoders[i]->decoder != NULL) - free(cfg->encoderDecoders[i]->decoder); - free(cfg->encoderDecoders[i]); - } - } + free(cfg->URL); + free(cfg->password); + free(cfg->format); + free(cfg->fileName); + free(cfg->metadataProgram); + free(cfg->metadataFormat); + free(cfg->serverName); + free(cfg->serverURL); + free(cfg->serverGenre); + free(cfg->serverDescription); + free(cfg->serverBitrate); + free(cfg->serverChannels); + free(cfg->serverSamplerate); + free(cfg->serverQuality); + for (i = 0; i < MAX_FORMAT_ENCDEC; i++) { + if (NULL == cfg->encoderDecoders[i]) + continue; + free(cfg->encoderDecoders[i]->format); + free(cfg->encoderDecoders[i]->match); + free(cfg->encoderDecoders[i]->encoder); + free(cfg->encoderDecoders[i]->decoder); + free(cfg->encoderDecoders[i]); } - memset(cfg, 0, sizeof(EZCONFIG)); + memset(cfg, 0, sizeof(*cfg)); } unsigned int