summaryrefslogtreecommitdiffstats
path: root/rbutil/sansapatcher
diff options
context:
space:
mode:
Diffstat (limited to 'rbutil/sansapatcher')
-rw-r--r--rbutil/sansapatcher/main.c1
-rw-r--r--rbutil/sansapatcher/sansaio-posix.c10
-rw-r--r--rbutil/sansapatcher/sansaio-win32.c13
-rw-r--r--rbutil/sansapatcher/sansaio.h1
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
}