src/BytecodeEmitter.cpp
changeset 177 56f7e5b0243c
parent 92 e3974e7360e9
     1.1 --- a/src/BytecodeEmitter.cpp	Sat Sep 01 17:11:06 2012 -0700
     1.2 +++ b/src/BytecodeEmitter.cpp	Sun Sep 02 13:06:09 2012 -0700
     1.3 @@ -17,6 +17,7 @@
     1.4   * JITCraft. If not, see http://www.gnu.org/licenses/.
     1.5   */
     1.6  #include <stdlib.h>
     1.7 +#include <string.h>
     1.8  #include "BytecodeEmitter.h"
     1.9  #include "Utility.h"
    1.10  #include "Types.h"
    1.11 @@ -56,7 +57,7 @@
    1.12  
    1.13      bytecode *newBuffer;
    1.14      if (buffer_ == inline_buffer_)
    1.15 -        newBuffer = (bytecode *)malloc(nbytes);
    1.16 +        newBuffer = (bytecode *)malloc(newSize);
    1.17      else
    1.18          newBuffer = (bytecode *)realloc(buffer_, newSize);
    1.19  
    1.20 @@ -69,9 +70,14 @@
    1.21          return false;
    1.22      }
    1.23  
    1.24 +    if (buffer_ == inline_buffer_)
    1.25 +        memcpy(newBuffer, inline_buffer_, (buffer_pos_ - inline_buffer_));
    1.26 +
    1.27      buffer_pos_ = newBuffer + size_t(buffer_pos_ - buffer_);
    1.28      buffer_ = newBuffer;
    1.29      buffer_end_ = buffer_ + newSize;
    1.30 +    assert(buffer_pos_ + nbytes < buffer_end_);
    1.31 +
    1.32      return true;
    1.33  }
    1.34