Ejemplo n.º 1
0
LJ_NOINLINE char *LJ_FASTCALL lj_buf_more2(SBuf *sb, MSize sz)
{
  MSize len = sbuflen(sb);
  lua_assert(sz > sbufleft(sb));
  if (LJ_UNLIKELY(sz > LJ_MAX_MEM || len + sz > LJ_MAX_MEM))
    lj_err_mem(sbufL(sb));
  buf_grow(sb, len + sz);
  return sbufP(sb);
}
Ejemplo n.º 2
0
void LJ_FASTCALL lj_buf_shrink(lua_State *L, SBuf *sb)
{
  char *b = sbufB(sb);
  MSize osz = (MSize)(sbufE(sb) - b);
  if (osz > 2*LJ_MIN_SBUF) {
    MSize n = (MSize)(sbufP(sb) - b);
    b = lj_mem_realloc(L, b, osz, (osz >> 1));
    setmref(sb->b, b);
    setmref(sb->p, b + n);
    setmref(sb->e, b + (osz >> 1));
  }
Ejemplo n.º 3
0
char *kp_buf_more(SBuf *sb, int sz)
{
	char *b;
	int old_len = sbuflen(sb);

	if (sz > sbufleft(sb)) {
		b = realloc(sbufB(sb), sbuflen(sb) * 2);
		sb->b = b;
		sb->p = b + old_len;
		sb->e = b + old_len * 2;
	}

	return sbufP(sb);
}