enhanced the variable buffer handling by not adding 'space' for the first variable
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
41b36ab170
commit
9b3b2d1e5b
16
lib/comp.c
16
lib/comp.c
@ -98,12 +98,17 @@ literals -->
|
|||||||
int hcl_copy_string_to (hcl_t* hcl, const hcl_oocs_t* src, hcl_oocs_t* dst, hcl_oow_t* dstcapa, int append, hcl_ooch_t delim_char)
|
int hcl_copy_string_to (hcl_t* hcl, const hcl_oocs_t* src, hcl_oocs_t* dst, hcl_oow_t* dstcapa, int append, hcl_ooch_t delim_char)
|
||||||
{
|
{
|
||||||
hcl_oow_t len, pos;
|
hcl_oow_t len, pos;
|
||||||
|
int delim = 0;
|
||||||
|
|
||||||
if (append)
|
if (append)
|
||||||
{
|
{
|
||||||
pos = dst->len;
|
pos = dst->len;
|
||||||
len = dst->len + src->len;
|
len = dst->len + src->len;
|
||||||
if (delim_char != '\0') len++;
|
if (dst->len > 0 && delim_char != '\0')
|
||||||
|
{
|
||||||
|
delim = 1;
|
||||||
|
len++;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -130,7 +135,7 @@ int hcl_copy_string_to (hcl_t* hcl, const hcl_oocs_t* src, hcl_oocs_t* dst, hcl_
|
|||||||
*dstcapa = capa - 1;
|
*dstcapa = capa - 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (append && delim_char != '\0') dst->ptr[pos++] = delim_char;
|
if (delim) dst->ptr[pos++] = delim_char;
|
||||||
hcl_copy_oochars (&dst->ptr[pos], src->ptr, src->len);
|
hcl_copy_oochars (&dst->ptr[pos], src->ptr, src->len);
|
||||||
dst->ptr[len] = '\0';
|
dst->ptr[len] = '\0';
|
||||||
dst->len = len;
|
dst->len = len;
|
||||||
@ -3032,6 +3037,7 @@ static HCL_INLINE int compile_class_p2 (hcl_t* hcl)
|
|||||||
/* TODO: reduce space waste for fixed double-long param */
|
/* TODO: reduce space waste for fixed double-long param */
|
||||||
hcl_oop_t obj;
|
hcl_oop_t obj;
|
||||||
hcl_oow_t index;
|
hcl_oow_t index;
|
||||||
|
|
||||||
obj = hcl_makestring(hcl, cbi->ivars.ptr, cbi->ivars.len);
|
obj = hcl_makestring(hcl, cbi->ivars.ptr, cbi->ivars.len);
|
||||||
if (HCL_UNLIKELY(!obj)) return -1;
|
if (HCL_UNLIKELY(!obj)) return -1;
|
||||||
if (add_literal(hcl, obj, &index) <= -1) return -1;
|
if (add_literal(hcl, obj, &index) <= -1) return -1;
|
||||||
@ -4311,7 +4317,11 @@ static HCL_INLINE int compile_catch (hcl_t* hcl)
|
|||||||
if (add_temporary_variable(hcl, exarg, hcl->c->tv.s.len, "exception variable", HCL_NULL) <= -1) return -1;
|
if (add_temporary_variable(hcl, exarg, hcl->c->tv.s.len, "exception variable", HCL_NULL) <= -1) return -1;
|
||||||
|
|
||||||
fbi = &hcl->c->funblk.info[hcl->c->funblk.depth];
|
fbi = &hcl->c->funblk.info[hcl->c->funblk.depth];
|
||||||
HCL_ASSERT (hcl, fbi->tmprlen == hcl->c->tv.s.len - HCL_CNODE_GET_TOKLEN(exarg) - 1);
|
/* a variable string inserts a space(' ') between variable name.
|
||||||
|
* if 'exarg' is the first variable in the variable string, there is no preceding space.
|
||||||
|
* if it is not, there is a preceding space. */
|
||||||
|
HCL_ASSERT (hcl, (hcl->c->tv.s.len == HCL_CNODE_GET_TOKLEN(exarg) && fbi->tmprlen == hcl->c->tv.s.len - HCL_CNODE_GET_TOKLEN(exarg)) || /* first */
|
||||||
|
(hcl->c->tv.s.len > HCL_CNODE_GET_TOKLEN(exarg) && fbi->tmprlen == hcl->c->tv.s.len - HCL_CNODE_GET_TOKLEN(exarg) - 1)); /* not first */
|
||||||
HCL_ASSERT (hcl, fbi->tmprcnt == vi.index_in_ctx + par_tmprcnt);
|
HCL_ASSERT (hcl, fbi->tmprcnt == vi.index_in_ctx + par_tmprcnt);
|
||||||
fbi->tmprlen = hcl->c->tv.s.len;
|
fbi->tmprlen = hcl->c->tv.s.len;
|
||||||
fbi->tmprcnt = hcl->c->tv.wcount;
|
fbi->tmprcnt = hcl->c->tv.wcount;
|
||||||
|
Loading…
Reference in New Issue
Block a user