summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rbutil/ipodpatcher/ipodio-posix.c10
-rw-r--r--rbutil/ipodpatcher/ipodio-win32.c13
-rw-r--r--rbutil/ipodpatcher/ipodio.h1
-rw-r--r--rbutil/ipodpatcher/main.c1
-rw-r--r--rbutil/rbutilqt/base/autodetection.cpp3
-rw-r--r--rbutil/rbutilqt/base/bootloaderinstallipod.cpp3
6 files changed, 27 insertions, 4 deletions
diff --git a/rbutil/ipodpatcher/ipodio-posix.c b/rbutil/ipodpatcher/ipodio-posix.c
index 377510912a..59cbc0188e 100644
--- a/rbutil/ipodpatcher/ipodio-posix.c
+++ b/rbutil/ipodpatcher/ipodio-posix.c
@@ -367,6 +367,16 @@ int ipod_alloc_buffer(struct ipod_t* ipod, int bufsize)
367 return 0; 367 return 0;
368} 368}
369 369
370int ipod_dealloc_buffer(struct ipod_t* ipod)
371{
372 if (ipod->sectorbuf == NULL) {
373 return -1;
374 }
375 free(ipod->sectorbuf);
376 ipod->sectorbuf = NULL;
377 return 0;
378}
379
370int ipod_seek(struct ipod_t* ipod, unsigned long pos) 380int ipod_seek(struct ipod_t* ipod, unsigned long pos)
371{ 381{
372 off_t res; 382 off_t res;
diff --git a/rbutil/ipodpatcher/ipodio-win32.c b/rbutil/ipodpatcher/ipodio-win32.c
index d4bdbf0173..cea218774a 100644
--- a/rbutil/ipodpatcher/ipodio-win32.c
+++ b/rbutil/ipodpatcher/ipodio-win32.c
@@ -170,6 +170,19 @@ int ipod_alloc_buffer(struct ipod_t* ipod, int bufsize)
170 return 0; 170 return 0;
171} 171}
172 172
173int ipod_dealloc_buffer(struct ipod_t* ipod)
174{
175 if (ipod->sectorbuf == NULL) {
176 return -1;
177 }
178 if(!VirtualFree(ipod->sectorbuf, 0, MEM_RELEASE)) {
179 ipod_print_error(" Error releasing buffer ");
180 return -1;
181 }
182 ipod->sectorbuf = NULL;
183 return 0;
184}
185
173int ipod_seek(struct ipod_t* ipod, unsigned long pos) 186int ipod_seek(struct ipod_t* ipod, unsigned long pos)
174{ 187{
175 if (SetFilePointer(ipod->dh, pos, NULL, FILE_BEGIN)==0xffffffff) { 188 if (SetFilePointer(ipod->dh, pos, NULL, FILE_BEGIN)==0xffffffff) {
diff --git a/rbutil/ipodpatcher/ipodio.h b/rbutil/ipodpatcher/ipodio.h
index 8a2f06cf20..4f1a35dd09 100644
--- a/rbutil/ipodpatcher/ipodio.h
+++ b/rbutil/ipodpatcher/ipodio.h
@@ -107,6 +107,7 @@ int ipod_scsi_inquiry(struct ipod_t* ipod, int page_code,
107ssize_t ipod_read(struct ipod_t* ipod, int nbytes); 107ssize_t ipod_read(struct ipod_t* ipod, int nbytes);
108ssize_t ipod_write(struct ipod_t* ipod, int nbytes); 108ssize_t ipod_write(struct ipod_t* ipod, int nbytes);
109int ipod_alloc_buffer(struct ipod_t* ipod, int bufsize); 109int ipod_alloc_buffer(struct ipod_t* ipod, int bufsize);
110int ipod_dealloc_buffer(struct ipod_t* ipod);
110 111
111/* In fat32format.c */ 112/* In fat32format.c */
112int format_partition(struct ipod_t* ipod, int partition); 113int format_partition(struct ipod_t* ipod, int partition);
diff --git a/rbutil/ipodpatcher/main.c b/rbutil/ipodpatcher/main.c
index 12c38de704..e82fbf53f3 100644
--- a/rbutil/ipodpatcher/main.c
+++ b/rbutil/ipodpatcher/main.c
@@ -614,5 +614,6 @@ int main(int argc, char* argv[])
614 } 614 }
615#endif 615#endif
616 616
617 ipod_dealloc_buffer(&ipod);
617 return 0; 618 return 0;
618} 619}
diff --git a/rbutil/rbutilqt/base/autodetection.cpp b/rbutil/rbutilqt/base/autodetection.cpp
index a453fa8d60..e57c4542d0 100644
--- a/rbutil/rbutilqt/base/autodetection.cpp
+++ b/rbutil/rbutilqt/base/autodetection.cpp
@@ -162,8 +162,7 @@ bool Autodetection::detect()
162 else { 162 else {
163 qDebug() << "[Autodetect] ipodpatcher: no Ipod found." << n; 163 qDebug() << "[Autodetect] ipodpatcher: no Ipod found." << n;
164 } 164 }
165 free(ipod.sectorbuf); 165 ipod_dealloc_buffer(&ipod);
166 ipod.sectorbuf = NULL;
167 166
168 // try sansapatcher 167 // try sansapatcher
169 // initialize sector buffer. Needed. 168 // initialize sector buffer. Needed.
diff --git a/rbutil/rbutilqt/base/bootloaderinstallipod.cpp b/rbutil/rbutilqt/base/bootloaderinstallipod.cpp
index 3d90663392..de7aaa897b 100644
--- a/rbutil/rbutilqt/base/bootloaderinstallipod.cpp
+++ b/rbutil/rbutilqt/base/bootloaderinstallipod.cpp
@@ -37,8 +37,7 @@ BootloaderInstallIpod::BootloaderInstallIpod(QObject *parent)
37BootloaderInstallIpod::~BootloaderInstallIpod() 37BootloaderInstallIpod::~BootloaderInstallIpod()
38{ 38{
39 if(ipod.sectorbuf) { 39 if(ipod.sectorbuf) {
40 free(ipod.sectorbuf); 40 ipod_dealloc_buffer(&ipod);
41 ipod.sectorbuf = NULL;
42 } 41 }
43} 42}
44 43