Index: compile.c =================================================================== --- compile.c (revision 48073) +++ compile.c (working copy) @@ -590,6 +590,15 @@ struct iseq_compile_data_storage *storage = iseq->compile_data->storage_current; + size_t mod = 0; + + /* The code assumes that SIZEOF_VALUE is 2 ** N, + * SIZEOF_VALUE is enough for word-alignment, and + * &storage->buff[0] is always word-aligned. */ + if ((mod = size & (size_t)(SIZEOF_VALUE - 1)) > 0) { + size += (SIZEOF_VALUE - mod); + } + if (storage->pos + size > storage->size) { unsigned long alloc_size = storage->size * 2;