summaryrefslogtreecommitdiff
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[])
404 } 404 }
405 405
406 sansa_close(&sansa); 406 sansa_close(&sansa);
407 sansa_dealloc_buffer(&sansa);
407 408
408 if (action==INTERACTIVE) { 409 if (action==INTERACTIVE) {
409 printf("Press ENTER to exit sansapatcher :"); 410 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)
122 return 0; 122 return 0;
123} 123}
124 124
125int sansa_dealloc_buffer(struct sansa_t* sansa)
126{
127 if (sansa->sectorbuf == NULL) {
128 return -1;
129 }
130 free(sansa->sectorbuf);
131 sansa->sectorbuf = NULL;
132 return 0;
133}
134
125int sansa_seek(struct sansa_t* sansa, loff_t pos) 135int sansa_seek(struct sansa_t* sansa, loff_t pos)
126{ 136{
127 off_t res; 137 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)
162 return 0; 162 return 0;
163} 163}
164 164
165int sansa_dealloc_buffer(struct sansa_t* sansa)
166{
167 if (sansa->sectorbuf == NULL) {
168 return -1;
169 }
170 if(!VirtualFree(sansa->sectorbuf, 0, MEM_RELEASE)) {
171 sansa_print_error(" Error releasing buffer ");
172 return -1;
173 }
174 sansa->sectorbuf = NULL;
175 return 0;
176}
177
165int sansa_seek(struct sansa_t* sansa, loff_t pos) 178int sansa_seek(struct sansa_t* sansa, loff_t pos)
166{ 179{
167 LARGE_INTEGER li; 180 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);
80int sansa_read(struct sansa_t* sansa, unsigned char* buf, int nbytes); 80int sansa_read(struct sansa_t* sansa, unsigned char* buf, int nbytes);
81int sansa_write(struct sansa_t* sansa, int nbytes); 81int sansa_write(struct sansa_t* sansa, int nbytes);
82int sansa_alloc_buffer(struct sansa_t* sansa, int bufsize); 82int sansa_alloc_buffer(struct sansa_t* sansa, int bufsize);
83int sansa_dealloc_buffer(struct sansa_t* sansa);
83 84
84#ifdef __cplusplus 85#ifdef __cplusplus
85} 86}