minor touch-up
This commit is contained in:
parent
63eb61c5c0
commit
24c48fab9a
@ -143,9 +143,9 @@ static int fnc_call (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
/* TODO: this mutex protection is wrong in that if a call to hawk_querymodulewithname()
|
/* TODO: this mutex protection is wrong in that if a call to hawk_querymodulewithname()
|
||||||
* is made outside this hawk module, the call is not protected under
|
* is made outside this hawk module, the call is not protected under
|
||||||
* the same mutex. FIX THIS */
|
* the same mutex. FIX THIS */
|
||||||
hawk_mtx_lock (&md->mq_mtx, HAWK_NULL);
|
hawk_mtx_lock(&md->mq_mtx, HAWK_NULL);
|
||||||
fncp = hawk_rtx_valtofnc(rtx, hawk_rtx_getarg(rtx, 0), &fnc);
|
fncp = hawk_rtx_valtofnc(rtx, hawk_rtx_getarg(rtx, 0), &fnc);
|
||||||
hawk_mtx_unlock (&md->mq_mtx);
|
hawk_mtx_unlock(&md->mq_mtx);
|
||||||
if (!fncp) return -1; /* hard failure */
|
if (!fncp) return -1; /* hard failure */
|
||||||
|
|
||||||
if (f_nargs < fnc.spec.arg.min || f_nargs > fnc.spec.arg.max)
|
if (f_nargs < fnc.spec.arg.min || f_nargs > fnc.spec.arg.max)
|
||||||
@ -176,7 +176,7 @@ static int fnc_call (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
v = hawk_rtx_evalcall(rtx, &call, fun, push_args_from_stack, (void*)&pafs, HAWK_NULL, HAWK_NULL);
|
v = hawk_rtx_evalcall(rtx, &call, fun, push_args_from_stack, (void*)&pafs, HAWK_NULL, HAWK_NULL);
|
||||||
if (HAWK_UNLIKELY(!v)) return -1; /* hard failure */
|
if (HAWK_UNLIKELY(!v)) return -1; /* hard failure */
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, v);
|
hawk_rtx_setretval(rtx, v);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -211,16 +211,16 @@ static int fnc_function_exists (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
md = (mod_data_t*)fi->mod->ctx;
|
md = (mod_data_t*)fi->mod->ctx;
|
||||||
/* hawk_query_module_with_name() may update some shared data under
|
/* hawk_query_module_with_name() may update some shared data under
|
||||||
* the hawk object. use a mutex for shared data safety */
|
* the hawk object. use a mutex for shared data safety */
|
||||||
hawk_mtx_lock (&md->mq_mtx, HAWK_NULL);
|
hawk_mtx_lock(&md->mq_mtx, HAWK_NULL);
|
||||||
rx = (hawk_querymodulewithname(hawk_rtx_gethawk(rtx), name.ptr, &sym) != HAWK_NULL);
|
rx = (hawk_querymodulewithname(hawk_rtx_gethawk(rtx), name.ptr, &sym) != HAWK_NULL);
|
||||||
hawk_mtx_unlock (&md->mq_mtx);
|
hawk_mtx_unlock(&md->mq_mtx);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
hawk_rtx_freevaloocstr (rtx, a0, name.ptr);
|
hawk_rtx_freevaloocstr(rtx, a0, name.ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, rx));
|
hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, rx));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
/* -------------------------------------------------------------------------- */
|
/* -------------------------------------------------------------------------- */
|
||||||
@ -241,10 +241,10 @@ static int fnc_cmgr_exists (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
rx = (hawk_get_cmgr_by_name(str) != HAWK_NULL);
|
rx = (hawk_get_cmgr_by_name(str) != HAWK_NULL);
|
||||||
hawk_rtx_freevaloocstr (rtx, a0, str);
|
hawk_rtx_freevaloocstr(rtx, a0, str);
|
||||||
}
|
}
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, rx));
|
hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, rx));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -266,8 +266,8 @@ static int fnc_gc (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
gen = hawk_rtx_gc(rtx, gen);
|
gen = hawk_rtx_gc(rtx, gen);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
HAWK_ASSERT (HAWK_IN_INT_RANGE(gen));
|
HAWK_ASSERT(HAWK_IN_INT_RANGE(gen));
|
||||||
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, gen));
|
hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, gen));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,8 +282,8 @@ static int fnc_gc_get_pressure (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
|
|
||||||
pressure = rtx->gc.pressure[gen];
|
pressure = rtx->gc.pressure[gen];
|
||||||
|
|
||||||
HAWK_ASSERT (HAWK_IN_INT_RANGE(pressure));
|
HAWK_ASSERT(HAWK_IN_INT_RANGE(pressure));
|
||||||
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, pressure));
|
hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, pressure));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -298,8 +298,8 @@ static int fnc_gc_get_threshold (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
|
|
||||||
threshold = rtx->gc.threshold[gen];
|
threshold = rtx->gc.threshold[gen];
|
||||||
|
|
||||||
HAWK_ASSERT (HAWK_IN_INT_RANGE(threshold));
|
HAWK_ASSERT(HAWK_IN_INT_RANGE(threshold));
|
||||||
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, threshold));
|
hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, threshold));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -324,8 +324,8 @@ static int fnc_gc_set_threshold (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
threshold = rtx->gc.threshold[gen]; /* no update. but retrieve the existing value */
|
threshold = rtx->gc.threshold[gen]; /* no update. but retrieve the existing value */
|
||||||
}
|
}
|
||||||
|
|
||||||
HAWK_ASSERT (HAWK_IN_INT_RANGE(threshold));
|
HAWK_ASSERT(HAWK_IN_INT_RANGE(threshold));
|
||||||
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, threshold));
|
hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, threshold));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -333,7 +333,7 @@ static int fnc_gcrefs (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
{
|
{
|
||||||
hawk_val_t* a0;
|
hawk_val_t* a0;
|
||||||
a0 = hawk_rtx_getarg(rtx, 0);
|
a0 = hawk_rtx_getarg(rtx, 0);
|
||||||
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, HAWK_VTR_IS_POINTER(a0)? a0->v_refs: 0));
|
hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, HAWK_VTR_IS_POINTER(a0)? a0->v_refs: 0));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -353,12 +353,12 @@ static int fnc_array (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
{
|
{
|
||||||
if (HAWK_UNLIKELY(hawk_rtx_setarrvalfld(rtx, tmp, i + 1, hawk_rtx_getarg(rtx, i)) == HAWK_NULL))
|
if (HAWK_UNLIKELY(hawk_rtx_setarrvalfld(rtx, tmp, i + 1, hawk_rtx_getarg(rtx, i)) == HAWK_NULL))
|
||||||
{
|
{
|
||||||
hawk_rtx_freeval (rtx, tmp, 0);
|
hawk_rtx_freeval(rtx, tmp, 0);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, tmp);
|
hawk_rtx_setretval(rtx, tmp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -387,25 +387,25 @@ static int fnc_map (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
out.type = HAWK_RTX_VALTOSTR_CPLDUP;
|
out.type = HAWK_RTX_VALTOSTR_CPLDUP;
|
||||||
if (hawk_rtx_valtostr(rtx, v, &out) <= -1)
|
if (hawk_rtx_valtostr(rtx, v, &out) <= -1)
|
||||||
{
|
{
|
||||||
hawk_rtx_freeval (rtx, tmp, 0);
|
hawk_rtx_freeval(rtx, tmp, 0);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
v = (++i >= nargs)? hawk_val_nil: hawk_rtx_getarg(rtx, i);
|
v = (++i >= nargs)? hawk_val_nil: hawk_rtx_getarg(rtx, i);
|
||||||
v = hawk_rtx_setmapvalfld(rtx, tmp, out.u.cpldup.ptr, out.u.cpldup.len, v);
|
v = hawk_rtx_setmapvalfld(rtx, tmp, out.u.cpldup.ptr, out.u.cpldup.len, v);
|
||||||
if (out.u.cpldup.ptr != idxbuf) hawk_rtx_freemem (rtx, out.u.cpldup.ptr);
|
if (out.u.cpldup.ptr != idxbuf) hawk_rtx_freemem(rtx, out.u.cpldup.ptr);
|
||||||
|
|
||||||
if (HAWK_UNLIKELY(!v))
|
if (HAWK_UNLIKELY(!v))
|
||||||
{
|
{
|
||||||
hawk_rtx_freeval (rtx, tmp, 0);
|
hawk_rtx_freeval(rtx, tmp, 0);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* if (i >= nargs) break; this check is probably not needed. another i++ in the 3rd segment of the for statement should be mostly harmless. potential overflow issue is not a real issue as the number of arguments can be so high. */
|
/* if (i >= nargs) break; this check is probably not needed. another i++ in the 3rd segment of the for statement should be mostly harmless. potential overflow issue is not a real issue as the number of arguments can be so high. */
|
||||||
}
|
}
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, tmp);
|
hawk_rtx_setretval(rtx, tmp);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -421,7 +421,7 @@ static int fnc_isnil (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_NIL);
|
r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_NIL);
|
||||||
if (HAWK_UNLIKELY(!r)) return -1;
|
if (HAWK_UNLIKELY(!r)) return -1;
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, r);
|
hawk_rtx_setretval(rtx, r);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -435,7 +435,7 @@ static int fnc_ismap (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_MAP);
|
r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_MAP);
|
||||||
if (HAWK_UNLIKELY(!r)) return -1;
|
if (HAWK_UNLIKELY(!r)) return -1;
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, r);
|
hawk_rtx_setretval(rtx, r);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -449,7 +449,7 @@ static int fnc_isarr (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_ARR);
|
r = hawk_rtx_makeintval(rtx, HAWK_RTX_GETVALTYPE(rtx, a0) == HAWK_VAL_ARR);
|
||||||
if (HAWK_UNLIKELY(!r)) return -1;
|
if (HAWK_UNLIKELY(!r)) return -1;
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, r);
|
hawk_rtx_setretval(rtx, r);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -461,7 +461,7 @@ static int fnc_modlibdirs (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
r = hawk_rtx_makestrvalwithoocstr(rtx, (hawk->opt.mod[0].len > 0)? (const hawk_ooch_t*)hawk->opt.mod[0].ptr: (const hawk_ooch_t*)HAWK_T(HAWK_DEFAULT_MODLIBDIRS));
|
r = hawk_rtx_makestrvalwithoocstr(rtx, (hawk->opt.mod[0].len > 0)? (const hawk_ooch_t*)hawk->opt.mod[0].ptr: (const hawk_ooch_t*)HAWK_T(HAWK_DEFAULT_MODLIBDIRS));
|
||||||
if (HAWK_UNLIKELY(!r)) return -1;
|
if (HAWK_UNLIKELY(!r)) return -1;
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, r);
|
hawk_rtx_setretval(rtx, r);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -477,7 +477,7 @@ static int fnc_type (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
r = hawk_rtx_makeintval(rtx, _type);
|
r = hawk_rtx_makeintval(rtx, _type);
|
||||||
if (HAWK_UNLIKELY(!r)) return -1;
|
if (HAWK_UNLIKELY(!r)) return -1;
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, r);
|
hawk_rtx_setretval(rtx, r);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -493,7 +493,7 @@ static int fnc_typename (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
r = hawk_rtx_makestrvalwithoocstr(rtx, name);
|
r = hawk_rtx_makestrvalwithoocstr(rtx, name);
|
||||||
if (HAWK_UNLIKELY(!r)) return -1;
|
if (HAWK_UNLIKELY(!r)) return -1;
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, r);
|
hawk_rtx_setretval(rtx, r);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -508,7 +508,7 @@ static int fnc_hash (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
a0 = hawk_rtx_getarg(rtx, 0);
|
a0 = hawk_rtx_getarg(rtx, 0);
|
||||||
v = hawk_rtx_hashval(rtx, a0); /* ignore v <= -1 which is an error */
|
v = hawk_rtx_hashval(rtx, a0); /* ignore v <= -1 which is an error */
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, hawk_rtx_makeintval(rtx, v));
|
hawk_rtx_setretval(rtx, hawk_rtx_makeintval(rtx, v));
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -581,8 +581,8 @@ static void unload (hawk_mod_t* mod, hawk_t* hawk)
|
|||||||
{
|
{
|
||||||
mod_data_t* md = (mod_data_t*)mod->ctx;
|
mod_data_t* md = (mod_data_t*)mod->ctx;
|
||||||
|
|
||||||
hawk_mtx_fini (&md->mq_mtx);
|
hawk_mtx_fini(&md->mq_mtx);
|
||||||
hawk_freemem (hawk, md);
|
hawk_freemem(hawk, md);
|
||||||
}
|
}
|
||||||
|
|
||||||
int hawk_mod_hawk (hawk_mod_t* mod, hawk_t* hawk)
|
int hawk_mod_hawk (hawk_mod_t* mod, hawk_t* hawk)
|
||||||
@ -592,7 +592,7 @@ int hawk_mod_hawk (hawk_mod_t* mod, hawk_t* hawk)
|
|||||||
md = hawk_allocmem(hawk, HAWK_SIZEOF(*md));
|
md = hawk_allocmem(hawk, HAWK_SIZEOF(*md));
|
||||||
if (HAWK_UNLIKELY(!md)) return -1;
|
if (HAWK_UNLIKELY(!md)) return -1;
|
||||||
|
|
||||||
hawk_mtx_init (&md->mq_mtx, hawk_getgem(hawk));
|
hawk_mtx_init(&md->mq_mtx, hawk_getgem(hawk));
|
||||||
|
|
||||||
mod->query = query;
|
mod->query = query;
|
||||||
mod->unload = unload;
|
mod->unload = unload;
|
||||||
|
@ -7714,7 +7714,6 @@ done:
|
|||||||
return &mdp->mod;
|
return &mdp->mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
hawk_mod_t* hawk_querymodulewithname (hawk_t* hawk, hawk_ooch_t* name, hawk_mod_sym_t* sym)
|
hawk_mod_t* hawk_querymodulewithname (hawk_t* hawk, hawk_ooch_t* name, hawk_mod_sym_t* sym)
|
||||||
{
|
{
|
||||||
const hawk_ooch_t* dc;
|
const hawk_ooch_t* dc;
|
||||||
@ -7724,7 +7723,6 @@ hawk_mod_t* hawk_querymodulewithname (hawk_t* hawk, hawk_ooch_t* name, hawk_mod_
|
|||||||
hawk_ooch_t tmp;
|
hawk_ooch_t tmp;
|
||||||
|
|
||||||
/*TOOD: non-module builtin function? fnc? */
|
/*TOOD: non-module builtin function? fnc? */
|
||||||
|
|
||||||
name_len = hawk_count_oocstr(name);
|
name_len = hawk_count_oocstr(name);
|
||||||
dc = hawk_find_oochars_in_oochars(name, name_len, HAWK_T("::"), 2, 0);
|
dc = hawk_find_oochars_in_oochars(name, name_len, HAWK_T("::"), 2, 0);
|
||||||
if (!dc)
|
if (!dc)
|
||||||
|
112
lib/run.c
112
lib/run.c
@ -338,13 +338,13 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
|
|||||||
if (str.ptr[i] == '\0')
|
if (str.ptr[i] == '\0')
|
||||||
{
|
{
|
||||||
/* '\0' is included in the value */
|
/* '\0' is included in the value */
|
||||||
hawk_rtx_freemem (rtx, str.ptr);
|
hawk_rtx_freemem(rtx, str.ptr);
|
||||||
hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR);
|
hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rtx->gbl.convfmt.ptr) hawk_rtx_freemem (rtx, rtx->gbl.convfmt.ptr);
|
if (rtx->gbl.convfmt.ptr) hawk_rtx_freemem(rtx, rtx->gbl.convfmt.ptr);
|
||||||
rtx->gbl.convfmt.ptr = str.ptr;
|
rtx->gbl.convfmt.ptr = str.ptr;
|
||||||
rtx->gbl.convfmt.len = str.len;
|
rtx->gbl.convfmt.len = str.len;
|
||||||
break;
|
break;
|
||||||
@ -503,13 +503,13 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
|
|||||||
if (str.ptr[i] == '\0')
|
if (str.ptr[i] == '\0')
|
||||||
{
|
{
|
||||||
/* '\0' is included in the value */
|
/* '\0' is included in the value */
|
||||||
hawk_rtx_freemem (rtx, str.ptr);
|
hawk_rtx_freemem(rtx, str.ptr);
|
||||||
hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR);
|
hawk_rtx_seterrnum (rtx, HAWK_NULL, HAWK_ECONVFMTCHR);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rtx->gbl.ofmt.ptr) hawk_rtx_freemem (rtx, rtx->gbl.ofmt.ptr);
|
if (rtx->gbl.ofmt.ptr) hawk_rtx_freemem(rtx, rtx->gbl.ofmt.ptr);
|
||||||
rtx->gbl.ofmt.ptr = str.ptr;
|
rtx->gbl.ofmt.ptr = str.ptr;
|
||||||
rtx->gbl.ofmt.len = str.len;
|
rtx->gbl.ofmt.len = str.len;
|
||||||
}
|
}
|
||||||
@ -521,7 +521,7 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
|
|||||||
str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len);
|
str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len);
|
||||||
if (HAWK_UNLIKELY(!str.ptr)) return -1;
|
if (HAWK_UNLIKELY(!str.ptr)) return -1;
|
||||||
|
|
||||||
if (rtx->gbl.ofs.ptr) hawk_rtx_freemem (rtx, rtx->gbl.ofs.ptr);
|
if (rtx->gbl.ofs.ptr) hawk_rtx_freemem(rtx, rtx->gbl.ofs.ptr);
|
||||||
rtx->gbl.ofs.ptr = str.ptr;
|
rtx->gbl.ofs.ptr = str.ptr;
|
||||||
rtx->gbl.ofs.len = str.len;
|
rtx->gbl.ofs.len = str.len;
|
||||||
|
|
||||||
@ -535,7 +535,7 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
|
|||||||
str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len);
|
str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len);
|
||||||
if (HAWK_UNLIKELY(!str.ptr)) return -1;
|
if (HAWK_UNLIKELY(!str.ptr)) return -1;
|
||||||
|
|
||||||
if (rtx->gbl.ors.ptr) hawk_rtx_freemem (rtx, rtx->gbl.ors.ptr);
|
if (rtx->gbl.ors.ptr) hawk_rtx_freemem(rtx, rtx->gbl.ors.ptr);
|
||||||
rtx->gbl.ors.ptr = str.ptr;
|
rtx->gbl.ors.ptr = str.ptr;
|
||||||
rtx->gbl.ors.len = str.len;
|
rtx->gbl.ors.len = str.len;
|
||||||
|
|
||||||
@ -619,7 +619,7 @@ static int set_global (hawk_rtx_t* rtx, int idx, hawk_nde_var_t* var, hawk_val_t
|
|||||||
str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len);
|
str.ptr = hawk_rtx_valtooocstrdup(rtx, val, &str.len);
|
||||||
if (HAWK_UNLIKELY(!str.ptr)) return -1;
|
if (HAWK_UNLIKELY(!str.ptr)) return -1;
|
||||||
|
|
||||||
if (rtx->gbl.subsep.ptr) hawk_rtx_freemem (rtx, rtx->gbl.subsep.ptr);
|
if (rtx->gbl.subsep.ptr) hawk_rtx_freemem(rtx, rtx->gbl.subsep.ptr);
|
||||||
rtx->gbl.subsep.ptr = str.ptr;
|
rtx->gbl.subsep.ptr = str.ptr;
|
||||||
rtx->gbl.subsep.len = str.len;
|
rtx->gbl.subsep.len = str.len;
|
||||||
|
|
||||||
@ -1142,9 +1142,9 @@ static int init_rtx (hawk_rtx_t* rtx, hawk_t* hawk, hawk_rio_cbs_t* rio)
|
|||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
oops_14:
|
oops_14:
|
||||||
hawk_rtx_freemem (rtx, rtx->formatmbs.tmp.ptr);
|
hawk_rtx_freemem(rtx, rtx->formatmbs.tmp.ptr);
|
||||||
oops_13:
|
oops_13:
|
||||||
hawk_rtx_freemem (rtx, rtx->format.tmp.ptr);
|
hawk_rtx_freemem(rtx, rtx->format.tmp.ptr);
|
||||||
oops_12:
|
oops_12:
|
||||||
hawk_htb_close (rtx->named);
|
hawk_htb_close (rtx->named);
|
||||||
oops_11:
|
oops_11:
|
||||||
@ -1168,7 +1168,7 @@ oops_3:
|
|||||||
oops_2:
|
oops_2:
|
||||||
hawk_ooecs_fini (&rtx->inrec.line);
|
hawk_ooecs_fini (&rtx->inrec.line);
|
||||||
oops_1:
|
oops_1:
|
||||||
hawk_rtx_freemem (rtx, rtx->stack);
|
hawk_rtx_freemem(rtx, rtx->stack);
|
||||||
oops_0:
|
oops_0:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
@ -1181,13 +1181,13 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
|
|||||||
{
|
{
|
||||||
hawk_rtx_refdownval(rtx, rtx->forin.ptr[--rtx->forin.size]);
|
hawk_rtx_refdownval(rtx, rtx->forin.ptr[--rtx->forin.size]);
|
||||||
}
|
}
|
||||||
hawk_rtx_freemem (rtx, rtx->forin.ptr);
|
hawk_rtx_freemem(rtx, rtx->forin.ptr);
|
||||||
rtx->forin.ptr = HAWK_NULL;
|
rtx->forin.ptr = HAWK_NULL;
|
||||||
rtx->forin.capa = 0;
|
rtx->forin.capa = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (rtx->pattern_range_state)
|
if (rtx->pattern_range_state)
|
||||||
hawk_rtx_freemem (rtx, rtx->pattern_range_state);
|
hawk_rtx_freemem(rtx, rtx->pattern_range_state);
|
||||||
|
|
||||||
/* close all pending io's */
|
/* close all pending io's */
|
||||||
/* TODO: what if this operation fails? */
|
/* TODO: what if this operation fails? */
|
||||||
@ -1210,7 +1210,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
|
|||||||
if (rtx->gbl.convfmt.ptr != HAWK_NULL &&
|
if (rtx->gbl.convfmt.ptr != HAWK_NULL &&
|
||||||
rtx->gbl.convfmt.ptr != DEFAULT_CONVFMT)
|
rtx->gbl.convfmt.ptr != DEFAULT_CONVFMT)
|
||||||
{
|
{
|
||||||
hawk_rtx_freemem (rtx, rtx->gbl.convfmt.ptr);
|
hawk_rtx_freemem(rtx, rtx->gbl.convfmt.ptr);
|
||||||
rtx->gbl.convfmt.ptr = HAWK_NULL;
|
rtx->gbl.convfmt.ptr = HAWK_NULL;
|
||||||
rtx->gbl.convfmt.len = 0;
|
rtx->gbl.convfmt.len = 0;
|
||||||
}
|
}
|
||||||
@ -1218,7 +1218,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
|
|||||||
if (rtx->gbl.ofmt.ptr != HAWK_NULL &&
|
if (rtx->gbl.ofmt.ptr != HAWK_NULL &&
|
||||||
rtx->gbl.ofmt.ptr != DEFAULT_OFMT)
|
rtx->gbl.ofmt.ptr != DEFAULT_OFMT)
|
||||||
{
|
{
|
||||||
hawk_rtx_freemem (rtx, rtx->gbl.ofmt.ptr);
|
hawk_rtx_freemem(rtx, rtx->gbl.ofmt.ptr);
|
||||||
rtx->gbl.ofmt.ptr = HAWK_NULL;
|
rtx->gbl.ofmt.ptr = HAWK_NULL;
|
||||||
rtx->gbl.ofmt.len = 0;
|
rtx->gbl.ofmt.len = 0;
|
||||||
}
|
}
|
||||||
@ -1226,7 +1226,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
|
|||||||
if (rtx->gbl.ofs.ptr != HAWK_NULL &&
|
if (rtx->gbl.ofs.ptr != HAWK_NULL &&
|
||||||
rtx->gbl.ofs.ptr != DEFAULT_OFS)
|
rtx->gbl.ofs.ptr != DEFAULT_OFS)
|
||||||
{
|
{
|
||||||
hawk_rtx_freemem (rtx, rtx->gbl.ofs.ptr);
|
hawk_rtx_freemem(rtx, rtx->gbl.ofs.ptr);
|
||||||
rtx->gbl.ofs.ptr = HAWK_NULL;
|
rtx->gbl.ofs.ptr = HAWK_NULL;
|
||||||
rtx->gbl.ofs.len = 0;
|
rtx->gbl.ofs.len = 0;
|
||||||
}
|
}
|
||||||
@ -1235,7 +1235,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
|
|||||||
rtx->gbl.ors.ptr != DEFAULT_ORS &&
|
rtx->gbl.ors.ptr != DEFAULT_ORS &&
|
||||||
rtx->gbl.ors.ptr != DEFAULT_ORS_CRLF)
|
rtx->gbl.ors.ptr != DEFAULT_ORS_CRLF)
|
||||||
{
|
{
|
||||||
hawk_rtx_freemem (rtx, rtx->gbl.ors.ptr);
|
hawk_rtx_freemem(rtx, rtx->gbl.ors.ptr);
|
||||||
rtx->gbl.ors.ptr = HAWK_NULL;
|
rtx->gbl.ors.ptr = HAWK_NULL;
|
||||||
rtx->gbl.ors.len = 0;
|
rtx->gbl.ors.len = 0;
|
||||||
}
|
}
|
||||||
@ -1243,7 +1243,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
|
|||||||
if (rtx->gbl.subsep.ptr != HAWK_NULL &&
|
if (rtx->gbl.subsep.ptr != HAWK_NULL &&
|
||||||
rtx->gbl.subsep.ptr != DEFAULT_SUBSEP)
|
rtx->gbl.subsep.ptr != DEFAULT_SUBSEP)
|
||||||
{
|
{
|
||||||
hawk_rtx_freemem (rtx, rtx->gbl.subsep.ptr);
|
hawk_rtx_freemem(rtx, rtx->gbl.subsep.ptr);
|
||||||
rtx->gbl.subsep.ptr = HAWK_NULL;
|
rtx->gbl.subsep.ptr = HAWK_NULL;
|
||||||
rtx->gbl.subsep.len = 0;
|
rtx->gbl.subsep.len = 0;
|
||||||
}
|
}
|
||||||
@ -1251,13 +1251,13 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
|
|||||||
hawk_ooecs_fini (&rtx->fnc.oout);
|
hawk_ooecs_fini (&rtx->fnc.oout);
|
||||||
hawk_becs_fini (&rtx->fnc.bout);
|
hawk_becs_fini (&rtx->fnc.bout);
|
||||||
|
|
||||||
hawk_rtx_freemem (rtx, rtx->formatmbs.tmp.ptr);
|
hawk_rtx_freemem(rtx, rtx->formatmbs.tmp.ptr);
|
||||||
rtx->formatmbs.tmp.ptr = HAWK_NULL;
|
rtx->formatmbs.tmp.ptr = HAWK_NULL;
|
||||||
rtx->formatmbs.tmp.len = 0;
|
rtx->formatmbs.tmp.len = 0;
|
||||||
hawk_becs_fini (&rtx->formatmbs.fmt);
|
hawk_becs_fini (&rtx->formatmbs.fmt);
|
||||||
hawk_becs_fini (&rtx->formatmbs.out);
|
hawk_becs_fini (&rtx->formatmbs.out);
|
||||||
|
|
||||||
hawk_rtx_freemem (rtx, rtx->format.tmp.ptr);
|
hawk_rtx_freemem(rtx, rtx->format.tmp.ptr);
|
||||||
rtx->format.tmp.ptr = HAWK_NULL;
|
rtx->format.tmp.ptr = HAWK_NULL;
|
||||||
rtx->format.tmp.len = 0;
|
rtx->format.tmp.len = 0;
|
||||||
hawk_ooecs_fini (&rtx->format.fmt);
|
hawk_ooecs_fini (&rtx->format.fmt);
|
||||||
@ -1269,7 +1269,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
|
|||||||
hawk_rtx_clrrec (rtx, 0);
|
hawk_rtx_clrrec (rtx, 0);
|
||||||
if (rtx->inrec.flds)
|
if (rtx->inrec.flds)
|
||||||
{
|
{
|
||||||
hawk_rtx_freemem (rtx, rtx->inrec.flds);
|
hawk_rtx_freemem(rtx, rtx->inrec.flds);
|
||||||
rtx->inrec.flds = HAWK_NULL;
|
rtx->inrec.flds = HAWK_NULL;
|
||||||
rtx->inrec.maxflds = 0;
|
rtx->inrec.maxflds = 0;
|
||||||
}
|
}
|
||||||
@ -1285,7 +1285,7 @@ static void fini_rtx (hawk_rtx_t* rtx, int fini_globals)
|
|||||||
{
|
{
|
||||||
HAWK_ASSERT (rtx->stack_top == 0);
|
HAWK_ASSERT (rtx->stack_top == 0);
|
||||||
|
|
||||||
hawk_rtx_freemem (rtx, rtx->stack);
|
hawk_rtx_freemem(rtx, rtx->stack);
|
||||||
rtx->stack = HAWK_NULL;
|
rtx->stack = HAWK_NULL;
|
||||||
rtx->stack_top = 0;
|
rtx->stack_top = 0;
|
||||||
rtx->stack_base = 0;
|
rtx->stack_base = 0;
|
||||||
@ -1729,7 +1729,7 @@ hawk_fun_t* hawk_rtx_findfunwithbcstr (hawk_rtx_t* rtx, const hawk_bch_t* name)
|
|||||||
wcs.ptr = hawk_rtx_dupbtoucstr(rtx, name, &wcs.len, 0);
|
wcs.ptr = hawk_rtx_dupbtoucstr(rtx, name, &wcs.len, 0);
|
||||||
if (!wcs.ptr) return HAWK_NULL;
|
if (!wcs.ptr) return HAWK_NULL;
|
||||||
fun = find_fun(rtx, wcs.ptr);
|
fun = find_fun(rtx, wcs.ptr);
|
||||||
hawk_rtx_freemem (rtx, wcs.ptr);
|
hawk_rtx_freemem(rtx, wcs.ptr);
|
||||||
return fun;
|
return fun;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -1742,7 +1742,7 @@ hawk_fun_t* hawk_rtx_findfunwithucstr (hawk_rtx_t* rtx, const hawk_uch_t* name)
|
|||||||
mbs.ptr = hawk_rtx_duputobcstr(rtx, name, &mbs.len);
|
mbs.ptr = hawk_rtx_duputobcstr(rtx, name, &mbs.len);
|
||||||
if (!mbs.ptr) return HAWK_NULL;
|
if (!mbs.ptr) return HAWK_NULL;
|
||||||
fun = find_fun(rtx, mbs.ptr);
|
fun = find_fun(rtx, mbs.ptr);
|
||||||
hawk_rtx_freemem (rtx, mbs.ptr);
|
hawk_rtx_freemem(rtx, mbs.ptr);
|
||||||
return fun;
|
return fun;
|
||||||
#else
|
#else
|
||||||
return find_fun(rtx, name);
|
return find_fun(rtx, name);
|
||||||
@ -1878,7 +1878,7 @@ oops:
|
|||||||
{
|
{
|
||||||
hawk_rtx_refdownval(rtx, v[--i]);
|
hawk_rtx_refdownval(rtx, v[--i]);
|
||||||
}
|
}
|
||||||
hawk_rtx_freemem (rtx, v);
|
hawk_rtx_freemem(rtx, v);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1909,7 +1909,7 @@ oops:
|
|||||||
{
|
{
|
||||||
hawk_rtx_refdownval(rtx, v[--i]);
|
hawk_rtx_refdownval(rtx, v[--i]);
|
||||||
}
|
}
|
||||||
hawk_rtx_freemem (rtx, v);
|
hawk_rtx_freemem(rtx, v);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1940,7 +1940,7 @@ oops:
|
|||||||
{
|
{
|
||||||
hawk_rtx_refdownval(rtx, v[--i]);
|
hawk_rtx_refdownval(rtx, v[--i]);
|
||||||
}
|
}
|
||||||
hawk_rtx_freemem (rtx, v);
|
hawk_rtx_freemem(rtx, v);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1971,7 +1971,7 @@ oops:
|
|||||||
{
|
{
|
||||||
hawk_rtx_refdownval(rtx, v[--i]);
|
hawk_rtx_refdownval(rtx, v[--i]);
|
||||||
}
|
}
|
||||||
hawk_rtx_freemem (rtx, v);
|
hawk_rtx_freemem(rtx, v);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -3123,7 +3123,7 @@ static HAWK_INLINE int delete_indexed (hawk_rtx_t* rtx, hawk_val_t* vv, hawk_nde
|
|||||||
{
|
{
|
||||||
case HAWK_VAL_MAP:
|
case HAWK_VAL_MAP:
|
||||||
val_map:
|
val_map:
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
len = HAWK_COUNTOF(idxbuf);
|
len = HAWK_COUNTOF(idxbuf);
|
||||||
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
|
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
|
||||||
if (HAWK_UNLIKELY(!str)) goto oops;
|
if (HAWK_UNLIKELY(!str)) goto oops;
|
||||||
@ -3169,11 +3169,11 @@ static HAWK_INLINE int delete_indexed (hawk_rtx_t* rtx, hawk_val_t* vv, hawk_nde
|
|||||||
else
|
else
|
||||||
hawk_arr_uplete (arr, idx, 1); /* no reindexing by compaction. keep the place unset */
|
hawk_arr_uplete (arr, idx, 1); /* no reindexing by compaction. keep the place unset */
|
||||||
|
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4128,7 +4128,7 @@ static hawk_val_t* do_assignment_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var,
|
|||||||
{
|
{
|
||||||
case HAWK_VAL_MAP:
|
case HAWK_VAL_MAP:
|
||||||
val_map:
|
val_map:
|
||||||
if (str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
len = HAWK_COUNTOF(idxbuf);
|
len = HAWK_COUNTOF(idxbuf);
|
||||||
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
|
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
|
||||||
if (HAWK_UNLIKELY(!str)) goto oops;
|
if (HAWK_UNLIKELY(!str)) goto oops;
|
||||||
@ -4198,7 +4198,7 @@ static hawk_val_t* do_assignment_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var,
|
|||||||
}
|
}
|
||||||
|
|
||||||
hawk_rtx_refupval(rtx, val);
|
hawk_rtx_refupval(rtx, val);
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return val;
|
return val;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4222,7 +4222,7 @@ static hawk_val_t* do_assignment_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var,
|
|||||||
}
|
}
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4280,7 +4280,7 @@ static hawk_val_t* do_assignment_positional (hawk_rtx_t* rtx, hawk_nde_pos_t* po
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
hawk_rtx_freemem (rtx, str.ptr);
|
hawk_rtx_freemem(rtx, str.ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (n <= -1) return HAWK_NULL;
|
if (n <= -1) return HAWK_NULL;
|
||||||
@ -4536,7 +4536,7 @@ rvalue_ok:
|
|||||||
ropv = eval_expression(rtx, right);
|
ropv = eval_expression(rtx, right);
|
||||||
if (HAWK_UNLIKELY(!ropv))
|
if (HAWK_UNLIKELY(!ropv))
|
||||||
{
|
{
|
||||||
if (str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -4579,12 +4579,12 @@ rvalue_ok:
|
|||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
hawk_rtx_refdownval(rtx, ropv);
|
hawk_rtx_refdownval(rtx, ropv);
|
||||||
return res;
|
return res;
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
if (str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
hawk_rtx_refdownval(rtx, ropv);
|
hawk_rtx_refdownval(rtx, ropv);
|
||||||
|
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
@ -5295,7 +5295,7 @@ static HAWK_INLINE int __cmp_str_mbs (hawk_rtx_t* rtx, hawk_val_t* left, hawk_va
|
|||||||
mbsptr = hawk_rtx_duputobchars(rtx, ls->val.ptr, ls->val.len, &mbslen);
|
mbsptr = hawk_rtx_duputobchars(rtx, ls->val.ptr, ls->val.len, &mbslen);
|
||||||
if (!mbsptr) return CMP_ERROR;
|
if (!mbsptr) return CMP_ERROR;
|
||||||
n = hawk_comp_bchars(mbsptr, mbslen, (const hawk_bch_t*)rs->val.ptr, rs->val.len, rtx->gbl.ignorecase);
|
n = hawk_comp_bchars(mbsptr, mbslen, (const hawk_bch_t*)rs->val.ptr, rs->val.len, rtx->gbl.ignorecase);
|
||||||
hawk_rtx_freemem (rtx, mbsptr);
|
hawk_rtx_freemem(rtx, mbsptr);
|
||||||
return n;
|
return n;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -7332,7 +7332,7 @@ static hawk_val_t** get_reference_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
|
|||||||
{
|
{
|
||||||
case HAWK_VAL_MAP:
|
case HAWK_VAL_MAP:
|
||||||
val_map:
|
val_map:
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
len = HAWK_COUNTOF(idxbuf);
|
len = HAWK_COUNTOF(idxbuf);
|
||||||
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
|
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
|
||||||
if (HAWK_UNLIKELY(!str)) goto oops;
|
if (HAWK_UNLIKELY(!str)) goto oops;
|
||||||
@ -7385,12 +7385,12 @@ static hawk_val_t** get_reference_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
|
|||||||
hawk_rtx_refupval(rtx, HAWK_MAP_VPTR(pair)); */
|
hawk_rtx_refupval(rtx, HAWK_MAP_VPTR(pair)); */
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return (hawk_val_t**)&HAWK_MAP_VPTR(pair);
|
return (hawk_val_t**)&HAWK_MAP_VPTR(pair);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
if (idx >= HAWK_ARR_SIZE(arr) || !HAWK_ARR_SLOT(arr, idx))
|
if (idx >= HAWK_ARR_SIZE(arr) || !HAWK_ARR_SLOT(arr, idx))
|
||||||
{
|
{
|
||||||
/* if the value doesn't exist for the given index, insert a nil at that position to create a placeholder for the reference */
|
/* if the value doesn't exist for the given index, insert a nil at that position to create a placeholder for the reference */
|
||||||
@ -7400,7 +7400,7 @@ static hawk_val_t** get_reference_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
|
|||||||
}
|
}
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -7645,7 +7645,7 @@ static hawk_val_t* eval_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
|
|||||||
{
|
{
|
||||||
case HAWK_VAL_MAP:
|
case HAWK_VAL_MAP:
|
||||||
val_map:
|
val_map:
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
len = HAWK_COUNTOF(idxbuf);
|
len = HAWK_COUNTOF(idxbuf);
|
||||||
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
|
str = idxnde_to_str(rtx, remidx, idxbuf, &len, &remidx, HAWK_NULL);
|
||||||
if (HAWK_UNLIKELY(!str)) goto oops;
|
if (HAWK_UNLIKELY(!str)) goto oops;
|
||||||
@ -7688,19 +7688,19 @@ static hawk_val_t* eval_indexed (hawk_rtx_t* rtx, hawk_nde_var_t* var)
|
|||||||
{
|
{
|
||||||
hawk_map_pair_t* pair;
|
hawk_map_pair_t* pair;
|
||||||
pair = hawk_map_search(map, str, len);
|
pair = hawk_map_search(map, str, len);
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return pair? (hawk_val_t*)HAWK_MAP_VPTR(pair): hawk_val_nil;
|
return pair? (hawk_val_t*)HAWK_MAP_VPTR(pair): hawk_val_nil;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
/* return nil if the index is out of range or the element at the index is not set.
|
/* return nil if the index is out of range or the element at the index is not set.
|
||||||
* no check for a negative index as it's guaranteed to be positive by idxnde_to_int() */
|
* no check for a negative index as it's guaranteed to be positive by idxnde_to_int() */
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return (idx < HAWK_ARR_SIZE(arr) && HAWK_ARR_SLOT(arr, idx))? ((hawk_val_t*)HAWK_ARR_DPTR(arr, idx)): hawk_val_nil;
|
return (idx < HAWK_ARR_SIZE(arr) && HAWK_ARR_SLOT(arr, idx))? ((hawk_val_t*)HAWK_ARR_DPTR(arr, idx)): hawk_val_nil;
|
||||||
}
|
}
|
||||||
|
|
||||||
oops:
|
oops:
|
||||||
if (str && str != idxbuf) hawk_rtx_freemem (rtx, str);
|
if (str && str != idxbuf) hawk_rtx_freemem(rtx, str);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
|
|
||||||
|
|
||||||
@ -8243,7 +8243,7 @@ hawk_ooch_t* hawk_rtx_format (
|
|||||||
#define GROW(buf) do { \
|
#define GROW(buf) do { \
|
||||||
if ((buf)->ptr) \
|
if ((buf)->ptr) \
|
||||||
{ \
|
{ \
|
||||||
hawk_rtx_freemem (rtx, (buf)->ptr); \
|
hawk_rtx_freemem(rtx, (buf)->ptr); \
|
||||||
(buf)->ptr = HAWK_NULL; \
|
(buf)->ptr = HAWK_NULL; \
|
||||||
} \
|
} \
|
||||||
(buf)->len += (buf)->inc; \
|
(buf)->len += (buf)->inc; \
|
||||||
@ -8258,7 +8258,7 @@ hawk_ooch_t* hawk_rtx_format (
|
|||||||
#define GROW_WITH_INC(buf,incv) do { \
|
#define GROW_WITH_INC(buf,incv) do { \
|
||||||
if ((buf)->ptr) \
|
if ((buf)->ptr) \
|
||||||
{ \
|
{ \
|
||||||
hawk_rtx_freemem (rtx, (buf)->ptr); \
|
hawk_rtx_freemem(rtx, (buf)->ptr); \
|
||||||
(buf)->ptr = HAWK_NULL; \
|
(buf)->ptr = HAWK_NULL; \
|
||||||
} \
|
} \
|
||||||
(buf)->len += ((incv) > (buf)->inc)? (incv): (buf)->inc; \
|
(buf)->len += ((incv) > (buf)->inc)? (incv): (buf)->inc; \
|
||||||
@ -8992,7 +8992,7 @@ wp_mod_main:
|
|||||||
{
|
{
|
||||||
if (hawk_ooecs_ccat(out, HAWK_T(' ')) == (hawk_oow_t)-1)
|
if (hawk_ooecs_ccat(out, HAWK_T(' ')) == (hawk_oow_t)-1)
|
||||||
{
|
{
|
||||||
if (str_free) hawk_rtx_freemem (rtx, str_free);
|
if (str_free) hawk_rtx_freemem(rtx, str_free);
|
||||||
hawk_rtx_refdownval(rtx, v);
|
hawk_rtx_refdownval(rtx, v);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
@ -9051,14 +9051,14 @@ wp_mod_main:
|
|||||||
if (hawk_ooecs_ccat(out, curc) == (hawk_oow_t)-1)
|
if (hawk_ooecs_ccat(out, curc) == (hawk_oow_t)-1)
|
||||||
{
|
{
|
||||||
s_fail:
|
s_fail:
|
||||||
if (str_free) hawk_rtx_freemem (rtx, str_free);
|
if (str_free) hawk_rtx_freemem(rtx, str_free);
|
||||||
hawk_rtx_refdownval(rtx, v);
|
hawk_rtx_refdownval(rtx, v);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str_free) hawk_rtx_freemem (rtx, str_free);
|
if (str_free) hawk_rtx_freemem(rtx, str_free);
|
||||||
|
|
||||||
if (flags & FLAG_MINUS)
|
if (flags & FLAG_MINUS)
|
||||||
{
|
{
|
||||||
@ -9119,7 +9119,7 @@ hawk_bch_t* hawk_rtx_formatmbs (
|
|||||||
#define GROW_MBSBUF(buf) do { \
|
#define GROW_MBSBUF(buf) do { \
|
||||||
if ((buf)->ptr) \
|
if ((buf)->ptr) \
|
||||||
{ \
|
{ \
|
||||||
hawk_rtx_freemem (rtx, (buf)->ptr); \
|
hawk_rtx_freemem(rtx, (buf)->ptr); \
|
||||||
(buf)->ptr = HAWK_NULL; \
|
(buf)->ptr = HAWK_NULL; \
|
||||||
} \
|
} \
|
||||||
(buf)->len += (buf)->inc; \
|
(buf)->len += (buf)->inc; \
|
||||||
@ -9134,7 +9134,7 @@ hawk_bch_t* hawk_rtx_formatmbs (
|
|||||||
#define GROW_MBSBUF_WITH_INC(buf,incv) do { \
|
#define GROW_MBSBUF_WITH_INC(buf,incv) do { \
|
||||||
if ((buf)->ptr) \
|
if ((buf)->ptr) \
|
||||||
{ \
|
{ \
|
||||||
hawk_rtx_freemem (rtx, (buf)->ptr); \
|
hawk_rtx_freemem(rtx, (buf)->ptr); \
|
||||||
(buf)->ptr = HAWK_NULL; \
|
(buf)->ptr = HAWK_NULL; \
|
||||||
} \
|
} \
|
||||||
(buf)->len += ((incv) > (buf)->inc)? (incv): (buf)->inc; \
|
(buf)->len += ((incv) > (buf)->inc)? (incv): (buf)->inc; \
|
||||||
@ -9876,7 +9876,7 @@ wp_mod_main:
|
|||||||
{
|
{
|
||||||
if (hawk_becs_ccat(out, HAWK_BT(' ')) == (hawk_oow_t)-1)
|
if (hawk_becs_ccat(out, HAWK_BT(' ')) == (hawk_oow_t)-1)
|
||||||
{
|
{
|
||||||
if (str_free) hawk_rtx_freemem (rtx, str_free);
|
if (str_free) hawk_rtx_freemem(rtx, str_free);
|
||||||
hawk_rtx_refdownval(rtx, v);
|
hawk_rtx_refdownval(rtx, v);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
@ -9934,14 +9934,14 @@ wp_mod_main:
|
|||||||
if (hawk_becs_ccat(out, curc) == (hawk_oow_t)-1)
|
if (hawk_becs_ccat(out, curc) == (hawk_oow_t)-1)
|
||||||
{
|
{
|
||||||
s_fail:
|
s_fail:
|
||||||
if (str_free) hawk_rtx_freemem (rtx, str_free);
|
if (str_free) hawk_rtx_freemem(rtx, str_free);
|
||||||
hawk_rtx_refdownval(rtx, v);
|
hawk_rtx_refdownval(rtx, v);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (str_free) hawk_rtx_freemem (rtx, str_free);
|
if (str_free) hawk_rtx_freemem(rtx, str_free);
|
||||||
|
|
||||||
if (flags & FLAG_MINUS)
|
if (flags & FLAG_MINUS)
|
||||||
{
|
{
|
||||||
|
@ -38,7 +38,7 @@ static int fnc_errno (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
retv = hawk_rtx_makeintval (rtx, list->errnum);
|
retv = hawk_rtx_makeintval (rtx, list->errnum);
|
||||||
if (retv == HAWK_NULL) return -1;
|
if (retv == HAWK_NULL) return -1;
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, retv);
|
hawk_rtx_setretval(rtx, retv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -78,11 +78,14 @@ static int fnc_errstr (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
retv = hawk_rtx_makestrvalwithstr (rtx, errmsg[errnum]);
|
retv = hawk_rtx_makestrvalwithstr (rtx, errmsg[errnum]);
|
||||||
if (retv == HAWK_NULL) return -1;
|
if (retv == HAWK_NULL) return -1;
|
||||||
|
|
||||||
hawk_rtx_setretval (rtx, retv);
|
hawk_rtx_setretval(rtx, retv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
* sed::file_to_file("s|root|ROOT|g", "/etc/passwd", "/tmp/x");
|
||||||
|
*/
|
||||||
static int fnc_file_to_file (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
static int fnc_file_to_file (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
||||||
{
|
{
|
||||||
hawk_sed_t* sed = HAWK_NULL;
|
hawk_sed_t* sed = HAWK_NULL;
|
||||||
@ -132,14 +135,18 @@ oops:
|
|||||||
while (i > 0)
|
while (i > 0)
|
||||||
{
|
{
|
||||||
--i;
|
--i;
|
||||||
hawk_rtx_freevaloocstr (rtx, a[i], xstr[i].ptr);
|
hawk_rtx_freevaloocstr(rtx, a[i], xstr[i].ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sed) hawk_sed_close (sed);
|
if (sed) hawk_sed_close (sed);
|
||||||
hawk_rtx_setretval (rtx, retv);
|
hawk_rtx_setretval(rtx, retv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* sed::str_to_str("s|ab|cd|g", "abcdefg", k);
|
||||||
|
* print k;
|
||||||
|
*/
|
||||||
static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
||||||
{
|
{
|
||||||
hawk_sed_t* sed = HAWK_NULL;
|
hawk_sed_t* sed = HAWK_NULL;
|
||||||
@ -149,7 +156,7 @@ static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
hawk_oocs_t outstr;
|
hawk_oocs_t outstr;
|
||||||
int i = 0, ret = 0, n;
|
int i = 0, ret = 0, n;
|
||||||
|
|
||||||
sed = hawk_sed_openstdwithmmgr (hawk_rtx_getmmgr(rtx), 0, hawk_rtx_getcmgr(rtx), HAWK_NULL);
|
sed = hawk_sed_openstdwithmmgr(hawk_rtx_getmmgr(rtx), 0, hawk_rtx_getcmgr(rtx), HAWK_NULL);
|
||||||
if (sed == HAWK_NULL)
|
if (sed == HAWK_NULL)
|
||||||
{
|
{
|
||||||
ret = -2;
|
ret = -2;
|
||||||
@ -174,14 +181,14 @@ static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (hawk_sed_execstdxstr (sed, &xstr[1], &outstr, HAWK_NULL) <= -1)
|
if (hawk_sed_execstdxstr(sed, &xstr[1], &outstr, HAWK_NULL) <= -1)
|
||||||
{
|
{
|
||||||
ret = -4;
|
ret = -4;
|
||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
|
|
||||||
tmp = hawk_rtx_makestrvalwithoocs(rtx, &outstr);
|
tmp = hawk_rtx_makestrvalwithoocs(rtx, &outstr);
|
||||||
hawk_sed_freemem (sed, outstr.ptr);
|
hawk_sed_freemem(sed, outstr.ptr);
|
||||||
|
|
||||||
if (!tmp)
|
if (!tmp)
|
||||||
{
|
{
|
||||||
@ -189,9 +196,9 @@ static int fnc_str_to_str (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
|||||||
goto oops;
|
goto oops;
|
||||||
}
|
}
|
||||||
|
|
||||||
hawk_rtx_refupval (rtx, tmp);
|
hawk_rtx_refupval(rtx, tmp);
|
||||||
n = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 2), tmp);
|
n = hawk_rtx_setrefval(rtx, (hawk_val_ref_t*)hawk_rtx_getarg(rtx, 2), tmp);
|
||||||
hawk_rtx_refdownval (rtx, tmp);
|
hawk_rtx_refdownval(rtx, tmp);
|
||||||
if (n <= -1)
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
ret = -5;
|
ret = -5;
|
||||||
@ -205,11 +212,11 @@ oops:
|
|||||||
while (i > 0)
|
while (i > 0)
|
||||||
{
|
{
|
||||||
--i;
|
--i;
|
||||||
hawk_rtx_freevaloocstr (rtx, a[i], xstr[i].ptr);
|
hawk_rtx_freevaloocstr(rtx, a[i], xstr[i].ptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sed) hawk_sed_close (sed);
|
if (sed) hawk_sed_close (sed);
|
||||||
hawk_rtx_setretval (rtx, retv);
|
hawk_rtx_setretval(rtx, retv);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user