From 02f3765351c9e25185b745b84f1a2604fb2149c7 Mon Sep 17 00:00:00 2001 From: mifi Date: Tue, 18 Dec 2007 21:20:28 +0000 Subject: - added patch for new flash functionality like: flash verify_image and flash erase_address. - added patch for new parport_write_on_exit command. Even this patch will fix some memory leaks. (thanks too oyvind and Spen for these patches) git-svn-id: svn://svn.berlios.de/openocd/trunk@240 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/helper/fileio.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) (limited to 'src/helper/fileio.c') diff --git a/src/helper/fileio.c b/src/helper/fileio.c index 3ee0b18b..f98d634f 100644 --- a/src/helper/fileio.c +++ b/src/helper/fileio.c @@ -44,8 +44,6 @@ int fileio_open_local(fileio_t *fileio) fileio_local_t *fileio_local = malloc(sizeof(fileio_local_t)); char access[4]; - fileio->location_private = fileio_local; - if ((fileio->access != FILEIO_WRITE) && (fileio->access != FILEIO_READWRITE)) { if (stat(fileio->url, &fileio_local->file_stat) == -1) @@ -113,6 +111,8 @@ int fileio_open_local(fileio_t *fileio) return ERROR_FILEIO_OPERATION_FAILED; } + fileio->location_private = fileio_local; + if ((fileio->access != FILEIO_WRITE) || (fileio->access == FILEIO_READWRITE)) { fileio->size = fileio_local->file_stat.st_size; @@ -172,6 +172,12 @@ int fileio_close_local(fileio_t *fileio) int retval; fileio_local_t *fileio_local = fileio->location_private; + if (fileio->location_private == NULL) + { + snprintf(fileio->error_str, FILEIO_MAX_ERROR_STRING, "couldn't close %s: ", fileio->url); + return ERROR_FILEIO_OPERATION_FAILED; + } + if ((retval = fclose(fileio_local->file)) != 0) { if (retval == EBADF) @@ -187,6 +193,7 @@ int fileio_close_local(fileio_t *fileio) } free(fileio->location_private); + fileio->location_private = NULL; return ERROR_OK; } @@ -209,6 +216,7 @@ int fileio_close(fileio_t *fileio) return retval; free(fileio->url); + fileio->url = NULL; return ERROR_OK; } -- cgit v1.2.3