This commit is contained in:
		@ -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;
 | 
				
			||||||
								}
 | 
													}
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user