helper/fileio: Fix memory leak.
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>__archive__
parent
24d9f0cfa0
commit
627f1cb354
|
@ -109,10 +109,10 @@ int fileio_open(struct fileio *fileio_p,
|
||||||
enum fileio_access access_type,
|
enum fileio_access access_type,
|
||||||
enum fileio_type 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 = malloc(sizeof(struct fileio_internal));
|
||||||
fileio_p->fp = fileio;
|
|
||||||
|
|
||||||
fileio->type = type;
|
fileio->type = type;
|
||||||
fileio->access = access_type;
|
fileio->access = access_type;
|
||||||
|
@ -120,7 +120,15 @@ int fileio_open(struct fileio *fileio_p,
|
||||||
|
|
||||||
retval = fileio_open_local(fileio);
|
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)
|
static inline int fileio_close_local(struct fileio_internal *fileio)
|
||||||
|
|
Loading…
Reference in New Issue