Ejemplo n.º 1
0
LJ_NOINLINE char *LJ_FASTCALL lj_buf_need2(SBuf *sb, MSize sz)
{
  lua_assert(sz > sbufsz(sb));
  if (LJ_UNLIKELY(sz > LJ_MAX_MEM))
    lj_err_mem(sbufL(sb));
  buf_grow(sb, sz);
  return sbufB(sb);
}
Ejemplo n.º 2
0
static void buf_grow(SBuf *sb, MSize sz)
{
  MSize osz = sbufsz(sb), len = sbuflen(sb), nsz = osz;
  char *b;
  if (nsz < LJ_MIN_SBUF) nsz = LJ_MIN_SBUF;
  while (nsz < sz) nsz += nsz;
  b = (char *)lj_mem_realloc(sbufL(sb), sbufB(sb), osz, nsz);
  setmref(sb->b, b);
  setmref(sb->p, b + len);
  setmref(sb->e, b + nsz);
}
Ejemplo n.º 3
0
char *kp_buf_need(SBuf *sb, int sz)
{
	char *b;
	int old_len = sbuflen(sb);

	if (sz > sbufsz(sb)) {
		b = realloc(sbufB(sb), sz);
		sb->b = b;
		sb->p = b + old_len;
		sb->e = b + sz;
	}

	return sbufB(sb);
}