vlc | branch: master | Rémi Denis-Courmont <[email protected]> | Mon Aug 31 19:30:59 2015 +0300| [5dc2d7fce85f944c3c5c05568fc769f3d0cb1c3c] | committer: Rémi Denis-Courmont
block: include left and right padding when memory mapping This avoids reallocating and copying the block in block_Realloc() in some cases. > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=5dc2d7fce85f944c3c5c05568fc769f3d0cb1c3c --- src/misc/block.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/misc/block.c b/src/misc/block.c index c821320..c5d9f62 100644 --- a/src/misc/block.c +++ b/src/misc/block.c @@ -319,6 +319,10 @@ block_t *block_mmap_Alloc (void *addr, size_t length) if (addr == MAP_FAILED) return NULL; + long page_mask = sysconf(_SC_PAGESIZE) - 1; + size_t left = ((uintptr_t)addr) & page_mask; + size_t right = (-length) & page_mask; + block_t *block = malloc (sizeof (*block)); if (block == NULL) { @@ -326,7 +330,9 @@ block_t *block_mmap_Alloc (void *addr, size_t length) return NULL; } - block_Init (block, addr, length); + block_Init (block, ((char *)addr) - left, left + length + right); + block->p_buffer = addr; + block->i_buffer = length; block->pf_release = block_mmap_Release; return block; } _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
