diff options
Diffstat (limited to 'xdelta3/xdelta3-main.h')
-rw-r--r-- | xdelta3/xdelta3-main.h | 27 |
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 | ||
454 | void* 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 | |||
453 | static void* | 462 | static void* |
454 | main_malloc (usize_t size) | 463 | main_malloc (usize_t size) |
455 | { | 464 | { |
@@ -484,6 +493,14 @@ main_free (void *ptr) | |||
484 | } | 493 | } |
485 | } | 494 | } |
486 | 495 | ||
496 | void 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. */ |
489 | static int | 506 | static 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 | ||