This commit is contained in:
parent
9fa26924c7
commit
ebfdb71044
@ -2854,6 +2854,7 @@ done:
|
|||||||
/* ------------------------------------------------------------ */
|
/* ------------------------------------------------------------ */
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
BEGIN {
|
||||||
if (sys::getnwifcfg("eth0", sys::NWIFCFG_IN6, x) >= 0)
|
if (sys::getnwifcfg("eth0", sys::NWIFCFG_IN6, x) >= 0)
|
||||||
{
|
{
|
||||||
for (i in x) print i, x[i];
|
for (i in x) print i, x[i];
|
||||||
@ -2862,6 +2863,7 @@ done:
|
|||||||
{
|
{
|
||||||
print "Error:", sys::errmsg();
|
print "Error:", sys::errmsg();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
static int fnc_getifcfg (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
static int fnc_getifcfg (hawk_rtx_t* rtx, const hawk_fnc_info_t* fi)
|
||||||
{
|
{
|
||||||
|
20
lib/val.c
20
lib/val.c
@ -64,7 +64,7 @@ BEGIN {
|
|||||||
for (i = 1; i < 10; i++) a[i] = i;
|
for (i = 1; i < 10; i++) a[i] = i;
|
||||||
a[11] = a;
|
a[11] = a;
|
||||||
a[12] = a;
|
a[12] = a;
|
||||||
a = nil;
|
a = @nil;
|
||||||
b[1] = a;
|
b[1] = a;
|
||||||
c[1] = 0;
|
c[1] = 0;
|
||||||
}
|
}
|
||||||
@ -81,7 +81,7 @@ BEGIN {
|
|||||||
a[13] = "hello";
|
a[13] = "hello";
|
||||||
j[3] = a;
|
j[3] = a;
|
||||||
a[14] = j;
|
a[14] = j;
|
||||||
a = nil;
|
a = @nil;
|
||||||
b[1] = a;
|
b[1] = a;
|
||||||
c[1] = 0;
|
c[1] = 0;
|
||||||
}
|
}
|
||||||
@ -98,7 +98,7 @@ BEGIN {
|
|||||||
a[13] = "hello";
|
a[13] = "hello";
|
||||||
j[3] = a;
|
j[3] = a;
|
||||||
a[14] = j;
|
a[14] = j;
|
||||||
a = nil;
|
a = @nil;
|
||||||
b[1] = a;
|
b[1] = a;
|
||||||
c[1] = 0;
|
c[1] = 0;
|
||||||
}
|
}
|
||||||
@ -115,8 +115,8 @@ BEGIN {
|
|||||||
a[13] = "hello";
|
a[13] = "hello";
|
||||||
j[3] = a;
|
j[3] = a;
|
||||||
a[14] = j;
|
a[14] = j;
|
||||||
a = nil;
|
a = @nil;
|
||||||
j = nil;
|
j = @nil; hawk::gc();
|
||||||
b[1] = a;
|
b[1] = a;
|
||||||
c[1] = 0;
|
c[1] = 0;
|
||||||
}
|
}
|
||||||
@ -1135,7 +1135,7 @@ retry:
|
|||||||
|
|
||||||
#if defined(HAWK_ENABLE_GC)
|
#if defined(HAWK_ENABLE_GC)
|
||||||
gc_chain_val (&rtx->gc.g[0], (hawk_val_t*)val);
|
gc_chain_val (&rtx->gc.g[0], (hawk_val_t*)val);
|
||||||
val->v_gc = 1;
|
val->v_gc = 1; /* only array and map are to be garbaged collected as of now */
|
||||||
#if defined(DEBUG_GC)
|
#if defined(DEBUG_GC)
|
||||||
hawk_logbfmt (hawk_rtx_gethawk(rtx), HAWK_LOG_STDERR, "[GC] MADE GCH %p VAL(ARR) %p\n", hawk_val_to_gch(val), val);
|
hawk_logbfmt (hawk_rtx_gethawk(rtx), HAWK_LOG_STDERR, "[GC] MADE GCH %p VAL(ARR) %p\n", hawk_val_to_gch(val), val);
|
||||||
#endif
|
#endif
|
||||||
@ -1242,7 +1242,7 @@ retry:
|
|||||||
|
|
||||||
#if defined(HAWK_ENABLE_GC)
|
#if defined(HAWK_ENABLE_GC)
|
||||||
gc_chain_val (&rtx->gc.g[0], (hawk_val_t*)val);
|
gc_chain_val (&rtx->gc.g[0], (hawk_val_t*)val);
|
||||||
val->v_gc = 1;
|
val->v_gc = 1; /* only array and map are to be garbaged collected as of now */
|
||||||
#if defined(DEBUG_GC)
|
#if defined(DEBUG_GC)
|
||||||
hawk_logbfmt (hawk_rtx_gethawk(rtx), HAWK_LOG_STDERR, "[GC] MADE GCH %p VAL(MAP) %p\n", hawk_val_to_gch(val), val);
|
hawk_logbfmt (hawk_rtx_gethawk(rtx), HAWK_LOG_STDERR, "[GC] MADE GCH %p VAL(MAP) %p\n", hawk_val_to_gch(val), val);
|
||||||
#endif
|
#endif
|
||||||
@ -1260,6 +1260,8 @@ hawk_val_t* hawk_rtx_makemapvalwithdata (hawk_rtx_t* rtx, hawk_val_map_data_t da
|
|||||||
map = hawk_rtx_makemapval(rtx);
|
map = hawk_rtx_makemapval(rtx);
|
||||||
if (HAWK_UNLIKELY(!map)) return HAWK_NULL;
|
if (HAWK_UNLIKELY(!map)) return HAWK_NULL;
|
||||||
|
|
||||||
|
hawk_rtx_refupval (rtx, map);
|
||||||
|
|
||||||
for (i = 0; i < count; i++)
|
for (i = 0; i < count; i++)
|
||||||
{
|
{
|
||||||
hawk_val_map_data_t* p;
|
hawk_val_map_data_t* p;
|
||||||
@ -1325,11 +1327,13 @@ hawk_val_t* hawk_rtx_makemapvalwithdata (hawk_rtx_t* rtx, hawk_val_map_data_t da
|
|||||||
if (tmp == HAWK_NULL || hawk_rtx_setmapvalfld(rtx, map, p->key.ptr, p->key.len, tmp) == HAWK_NULL)
|
if (tmp == HAWK_NULL || hawk_rtx_setmapvalfld(rtx, map, p->key.ptr, p->key.len, tmp) == HAWK_NULL)
|
||||||
{
|
{
|
||||||
if (tmp) hawk_rtx_freeval (rtx, tmp, HAWK_RTX_FREEVAL_CACHE);
|
if (tmp) hawk_rtx_freeval (rtx, tmp, HAWK_RTX_FREEVAL_CACHE);
|
||||||
hawk_rtx_freeval (rtx, map, HAWK_RTX_FREEVAL_CACHE);
|
hawk_rtx_refdownval (rtx, map);
|
||||||
return HAWK_NULL;
|
return HAWK_NULL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
hawk_rtx_refdownval_nofree (rtx, map);
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -566,6 +566,8 @@ static int getoption_byid (hawk_rtx_t* rtx, uctx_list_t* list, hawk_int_t id, ha
|
|||||||
if (map)
|
if (map)
|
||||||
{
|
{
|
||||||
count = 1;
|
count = 1;
|
||||||
|
hawk_rtx_refupval (rtx, map);
|
||||||
|
|
||||||
uci_foreach_element(&uo->v.list, tmp)
|
uci_foreach_element(&uo->v.list, tmp)
|
||||||
{
|
{
|
||||||
const hawk_oocs_t* subsep;
|
const hawk_oocs_t* subsep;
|
||||||
@ -577,13 +579,13 @@ static int getoption_byid (hawk_rtx_t* rtx, uctx_list_t* list, hawk_int_t id, ha
|
|||||||
fld = hawk_rtx_makestrvalwithbcstr(rtx, tmp->name);
|
fld = hawk_rtx_makestrvalwithbcstr(rtx, tmp->name);
|
||||||
if (!fld)
|
if (!fld)
|
||||||
{
|
{
|
||||||
hawk_rtx_refupval (rtx, map);
|
|
||||||
hawk_rtx_refdownval (rtx, map);
|
hawk_rtx_refdownval (rtx, map);
|
||||||
map = HAWK_NULL;
|
map = HAWK_NULL;
|
||||||
x = UCI_ERR_MEM;
|
x = UCI_ERR_MEM;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
hawk_rtx_refupval (rtx, fld);
|
||||||
subsep = hawk_rtx_getsubsep(rtx);
|
subsep = hawk_rtx_getsubsep(rtx);
|
||||||
|
|
||||||
k[0].ptr = HAWK_T("value");
|
k[0].ptr = HAWK_T("value");
|
||||||
@ -599,9 +601,7 @@ static int getoption_byid (hawk_rtx_t* rtx, uctx_list_t* list, hawk_int_t id, ha
|
|||||||
if (!kp || hawk_rtx_setmapvalfld(rtx, map, kp, kl, fld) == HAWK_NULL)
|
if (!kp || hawk_rtx_setmapvalfld(rtx, map, kp, kl, fld) == HAWK_NULL)
|
||||||
{
|
{
|
||||||
if (kp) hawk_rtx_freemem (rtx, kp);
|
if (kp) hawk_rtx_freemem (rtx, kp);
|
||||||
hawk_rtx_refupval (rtx, fld);
|
|
||||||
hawk_rtx_refdownval (rtx, fld);
|
hawk_rtx_refdownval (rtx, fld);
|
||||||
hawk_rtx_refupval (rtx, map);
|
|
||||||
hawk_rtx_refdownval (rtx, map);
|
hawk_rtx_refdownval (rtx, map);
|
||||||
map = HAWK_NULL;
|
map = HAWK_NULL;
|
||||||
x = UCI_ERR_MEM;
|
x = UCI_ERR_MEM;
|
||||||
@ -609,15 +609,17 @@ static int getoption_byid (hawk_rtx_t* rtx, uctx_list_t* list, hawk_int_t id, ha
|
|||||||
}
|
}
|
||||||
|
|
||||||
hawk_rtx_freemem (rtx, kp);
|
hawk_rtx_freemem (rtx, kp);
|
||||||
|
hawk_rtx_refdownval (rtx, fld);
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (map)
|
if (map)
|
||||||
{
|
{
|
||||||
if (hawk_rtx_setrefval(rtx, ref, map) <= -1)
|
int n;
|
||||||
|
n = hawk_rtx_setrefval(rtx, ref, map);
|
||||||
|
hawk_rtx_refdownval (rtx, map);
|
||||||
|
if (n <= -1)
|
||||||
{
|
{
|
||||||
hawk_rtx_refupval (rtx, map);
|
|
||||||
hawk_rtx_refdownval (rtx, map);
|
|
||||||
map = HAWK_NULL;
|
map = HAWK_NULL;
|
||||||
return -9999;
|
return -9999;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user