diff -r 2b9141b01023 -r 56f7e5b0243c src/BytecodeEmitter.cpp --- a/src/BytecodeEmitter.cpp Sat Sep 01 17:11:06 2012 -0700 +++ b/src/BytecodeEmitter.cpp Sun Sep 02 13:06:09 2012 -0700 @@ -17,6 +17,7 @@ * JITCraft. If not, see http://www.gnu.org/licenses/. */ #include +#include #include "BytecodeEmitter.h" #include "Utility.h" #include "Types.h" @@ -56,7 +57,7 @@ bytecode *newBuffer; if (buffer_ == inline_buffer_) - newBuffer = (bytecode *)malloc(nbytes); + newBuffer = (bytecode *)malloc(newSize); else newBuffer = (bytecode *)realloc(buffer_, newSize); @@ -69,9 +70,14 @@ return false; } + if (buffer_ == inline_buffer_) + memcpy(newBuffer, inline_buffer_, (buffer_pos_ - inline_buffer_)); + buffer_pos_ = newBuffer + size_t(buffer_pos_ - buffer_); buffer_ = newBuffer; buffer_end_ = buffer_ + newSize; + assert(buffer_pos_ + nbytes < buffer_end_); + return true; }