The memory leak occurs when opening a file fails. It can be
reproduced by using the "flash verify_bank" command with a filename
that does not exist.
Change-Id: I60b7b545c18793d750ff75d08124fde3f0aa6f64
Signed-off-by: Marc Schink <openocd-dev@marcschink.de>
Reviewed-on: http://openocd.zylin.com/2998
Tested-by: jenkins
Reviewed-by: Spencer Oliver <spen@spen-soft.co.uk>
enum fileio_access access_type,
enum fileio_type type)
{
- int retval = ERROR_OK;
+ int retval;
+ struct fileio_internal *fileio;
- struct fileio_internal *fileio = malloc(sizeof(struct fileio_internal));
- fileio_p->fp = fileio;
+ fileio = malloc(sizeof(struct fileio_internal));
fileio->type = type;
fileio->access = access_type;
retval = fileio_open_local(fileio);
- return retval;
+ if (retval != ERROR_OK) {
+ free(fileio->url);
+ free(fileio);
+ return retval;
+ }
+
+ fileio_p->fp = fileio;
+
+ return ERROR_OK;
}
static inline int fileio_close_local(struct fileio_internal *fileio)