فهرست منبع

core/xavps: Fix assignment to indexed subname.

$xavp(name1[idx1]=>name2[idx2])

When idx2 is used, the current value is now replaced instead of ignored.
Alex Hermann 14 سال پیش
والد
کامیت
4563f6949d
1فایلهای تغییر یافته به همراه4 افزوده شده و 7 حذف شده
  1. 4 7
      xavp.c

+ 4 - 7
xavp.c

@@ -136,7 +136,7 @@ sr_xavp_t *xavp_set_value(str *name, int idx, sr_xval_t *val, sr_xavp_t **list)
 				&& strncmp(avp->name.s, name->s, name->len)==0)
 		{
 			if(idx==n)
-				return avp;
+				break;
 			n++;
 		}
 		prv = avp;
@@ -166,16 +166,13 @@ sr_xavp_t *xavp_set_value(str *name, int idx, sr_xval_t *val, sr_xavp_t **list)
 		avp->val.v.s.s[val->v.s.len] = '\0';
 		avp->val.v.s.len = val->v.s.len;
 	}
-	if(prv)
-	{
-			avp->next = prv->next;
-			prv->next = avp;
+	avp->next = tmp->next;
+	if(prv) {
+		prv->next = avp;
 	} else {
 		if(list) {
-			avp->next = *list;
 			*list = avp;
 		} else {
-			avp->next = *_xavp_list_crt;
 			*_xavp_list_crt = avp;
 		}
 	}