From 8bca4f1387c255d1770ed5ab0e60700956b93bbe Mon Sep 17 00:00:00 2001 From: ian Date: Mon, 29 Oct 2012 15:43:37 +0000 Subject: * mmap.c (backtrace_vector_release): Make sure freed block is aligned on 8-byte boundary. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@192945 138bc75d-0d04-0410-961f-82ee72b054a4 --- libbacktrace/mmap.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'libbacktrace/mmap.c') diff --git a/libbacktrace/mmap.c b/libbacktrace/mmap.c index e07810d4575..25fdc21a9f7 100644 --- a/libbacktrace/mmap.c +++ b/libbacktrace/mmap.c @@ -229,8 +229,18 @@ backtrace_vector_release (struct backtrace_state *state, backtrace_error_callback error_callback, void *data) { - backtrace_free (state, (char *) vec->base + vec->size, vec->alc, - error_callback, data); + size_t size; + size_t alc; + size_t aligned; + + /* Make sure that the block that we free is aligned on an 8-byte + boundary. */ + size = vec->size; + alc = vec->alc; + aligned = (size + 7) & ~ (size_t) 7; + alc -= aligned - size; + + backtrace_free (state, (char *) vec->base + size, alc, error_callback, data); vec->alc = 0; return 1; } -- cgit v1.2.1