summaryrefslogtreecommitdiff
path: root/xdelta3/xdelta3-main.h
diff options
context:
space:
mode:
Diffstat (limited to 'xdelta3/xdelta3-main.h')
-rw-r--r--xdelta3/xdelta3-main.h27
1 files changed, 22 insertions, 5 deletions
diff --git a/xdelta3/xdelta3-main.h b/xdelta3/xdelta3-main.h
index dfac8b7..5b1efa9 100644
--- a/xdelta3/xdelta3-main.h
+++ b/xdelta3/xdelta3-main.h
@@ -391,6 +391,7 @@ main_config (void)
391 XPR(NTR "XD3_HARDMAXWINSIZE=%d\n", XD3_HARDMAXWINSIZE); 391 XPR(NTR "XD3_HARDMAXWINSIZE=%d\n", XD3_HARDMAXWINSIZE);
392 XPR(NTR "sizeof(void*)=%d\n", (int)sizeof(void*)); 392 XPR(NTR "sizeof(void*)=%d\n", (int)sizeof(void*));
393 XPR(NTR "sizeof(int)=%d\n", (int)sizeof(int)); 393 XPR(NTR "sizeof(int)=%d\n", (int)sizeof(int));
394 XPR(NTR "sizeof(size_t)=%d\n", (int)sizeof(size_t));
394 XPR(NTR "sizeof(uint32_t)=%d\n", (int)sizeof(uint32_t)); 395 XPR(NTR "sizeof(uint32_t)=%d\n", (int)sizeof(uint32_t));
395 XPR(NTR "sizeof(uint64_t)=%d\n", (int)sizeof(uint64_t)); 396 XPR(NTR "sizeof(uint64_t)=%d\n", (int)sizeof(uint64_t));
396 XPR(NTR "sizeof(usize_t)=%d\n", (int)sizeof(usize_t)); 397 XPR(NTR "sizeof(usize_t)=%d\n", (int)sizeof(usize_t));
@@ -450,6 +451,14 @@ main_malloc1 (usize_t size)
450 return r; 451 return r;
451} 452}
452 453
454void* main_bufalloc (usize_t size) {
455#if XD3_WIN32
456 return VirtualAlloc(NULL, size, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
457#else
458 return main_malloc1(size);
459#endif
460}
461
453static void* 462static void*
454main_malloc (usize_t size) 463main_malloc (usize_t size)
455{ 464{
@@ -484,6 +493,14 @@ main_free (void *ptr)
484 } 493 }
485} 494}
486 495
496void main_buffree (void *ptr) {
497#if XD3_WIN32
498 VirtualFree(ptr, 0, MEM_RELEASE);
499#else
500 main_free(ptr);
501#endif
502}
503
487/* This ensures that (ret = errno) always indicates failure, in case errno was 504/* This ensures that (ret = errno) always indicates failure, in case errno was
488 * accidentally not set. If this prints there's a bug somewhere. */ 505 * accidentally not set. If this prints there's a bug somewhere. */
489static int 506static int
@@ -1752,7 +1769,7 @@ main_merge_arguments (main_merge_list* merges)
1752 1769
1753 if (main_bdata != NULL) 1770 if (main_bdata != NULL)
1754 { 1771 {
1755 main_free (main_bdata); 1772 main_buffree (main_bdata);
1756 main_bdata = NULL; 1773 main_bdata = NULL;
1757 main_bsize = 0; 1774 main_bsize = 0;
1758 } 1775 }
@@ -1887,11 +1904,11 @@ main_merge_output (xd3_stream *stream, main_file *ofile)
1887 1904
1888 if (main_bsize < window_size) 1905 if (main_bsize < window_size)
1889 { 1906 {
1890 main_free (main_bdata); 1907 main_buffree (main_bdata);
1891 main_bdata = NULL; 1908 main_bdata = NULL;
1892 main_bsize = 0; 1909 main_bsize = 0;
1893 if ((main_bdata = (uint8_t*) 1910 if ((main_bdata = (uint8_t*)
1894 main_malloc (window_size)) == NULL) 1911 main_bufalloc (window_size)) == NULL)
1895 { 1912 {
1896 return ENOMEM; 1913 return ENOMEM;
1897 } 1914 }
@@ -3079,7 +3096,7 @@ main_input (xd3_cmd cmd,
3079 3096
3080 main_bsize = winsize = main_get_winsize (ifile); 3097 main_bsize = winsize = main_get_winsize (ifile);
3081 3098
3082 if ((main_bdata = (uint8_t*) main_malloc (winsize)) == NULL) 3099 if ((main_bdata = (uint8_t*) main_bufalloc (winsize)) == NULL)
3083 { 3100 {
3084 return EXIT_FAILURE; 3101 return EXIT_FAILURE;
3085 } 3102 }
@@ -3441,7 +3458,7 @@ main_cleanup (void)
3441 appheader_used = NULL; 3458 appheader_used = NULL;
3442 } 3459 }
3443 3460
3444 main_free (main_bdata); 3461 main_buffree (main_bdata);
3445 main_bdata = NULL; 3462 main_bdata = NULL;
3446 main_bsize = 0; 3463 main_bsize = 0;
3447 3464