diff options
author | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2013-01-01 13:23:47 +0100 |
---|---|---|
committer | Dominik Riebeling <Dominik.Riebeling@gmail.com> | 2013-01-01 15:06:41 +0100 |
commit | 163ab4617096edb6384aa8fc7a764d440aee3fb9 (patch) | |
tree | ca0e49f5c184aa4def60bcca7f17f0653f45eb6e /rbutil/sansapatcher | |
parent | a8d291bd20428a59d29b886b7b1403261f9e5af3 (diff) |
Provide dealloc function to sansapatcher.
Similar as done with ipodpatcher provide a function to free the allocated
sector buffer.
Change-Id: Ie51e82f7191496bb48973148af1cc35cd37993d3
Diffstat (limited to 'rbutil/sansapatcher')
-rw-r--r-- | rbutil/sansapatcher/main.c | 1 | ||||
-rw-r--r-- | rbutil/sansapatcher/sansaio-posix.c | 10 | ||||
-rw-r--r-- | rbutil/sansapatcher/sansaio-win32.c | 13 | ||||
-rw-r--r-- | rbutil/sansapatcher/sansaio.h | 1 |
4 files changed, 25 insertions, 0 deletions
diff --git a/rbutil/sansapatcher/main.c b/rbutil/sansapatcher/main.c index 743ebfedbd..29c2f915bb 100644 --- a/rbutil/sansapatcher/main.c +++ b/rbutil/sansapatcher/main.c @@ -404,6 +404,7 @@ int main(int argc, char* argv[]) } sansa_close(&sansa); + sansa_dealloc_buffer(&sansa); if (action==INTERACTIVE) { printf("Press ENTER to exit sansapatcher :"); diff --git a/rbutil/sansapatcher/sansaio-posix.c b/rbutil/sansapatcher/sansaio-posix.c index d173fbc300..44c4dcc95c 100644 --- a/rbutil/sansapatcher/sansaio-posix.c +++ b/rbutil/sansapatcher/sansaio-posix.c @@ -122,6 +122,16 @@ int sansa_alloc_buffer(struct sansa_t *sansa, int bufsize) return 0; } +int sansa_dealloc_buffer(struct sansa_t* sansa) +{ + if (sansa->sectorbuf == NULL) { + return -1; + } + free(sansa->sectorbuf); + sansa->sectorbuf = NULL; + return 0; +} + int sansa_seek(struct sansa_t* sansa, loff_t pos) { off_t res; diff --git a/rbutil/sansapatcher/sansaio-win32.c b/rbutil/sansapatcher/sansaio-win32.c index 256712fe20..ee6a8cd93d 100644 --- a/rbutil/sansapatcher/sansaio-win32.c +++ b/rbutil/sansapatcher/sansaio-win32.c @@ -162,6 +162,19 @@ int sansa_alloc_buffer(struct sansa_t* sansa, int bufsize) return 0; } +int sansa_dealloc_buffer(struct sansa_t* sansa) +{ + if (sansa->sectorbuf == NULL) { + return -1; + } + if(!VirtualFree(sansa->sectorbuf, 0, MEM_RELEASE)) { + sansa_print_error(" Error releasing buffer "); + return -1; + } + sansa->sectorbuf = NULL; + return 0; +} + int sansa_seek(struct sansa_t* sansa, loff_t pos) { LARGE_INTEGER li; diff --git a/rbutil/sansapatcher/sansaio.h b/rbutil/sansapatcher/sansaio.h index 9e8ebb93c9..61e2f1d1b2 100644 --- a/rbutil/sansapatcher/sansaio.h +++ b/rbutil/sansapatcher/sansaio.h @@ -80,6 +80,7 @@ int sansa_seek(struct sansa_t* sansa, loff_t pos); int sansa_read(struct sansa_t* sansa, unsigned char* buf, int nbytes); int sansa_write(struct sansa_t* sansa, int nbytes); int sansa_alloc_buffer(struct sansa_t* sansa, int bufsize); +int sansa_dealloc_buffer(struct sansa_t* sansa); #ifdef __cplusplus } |