[sr-dev] git:master: core/xavps: Fix assignment to indexed subname.

Alex Hermann alex at speakup.nl
Fri Apr 22 18:49:40 CEST 2011


Module: sip-router
Branch: master
Commit: 4563f6949d2beabd0d9411dee1e93216f5fef8f6
URL:    http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=4563f6949d2beabd0d9411dee1e93216f5fef8f6

Author: Alex Hermann <alex at speakup.nl>
Committer: Alex Hermann <alex at speakup.nl>
Date:   Thu Mar 24 18:50:23 2011 +0100

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.

---

 xavp.c |   11 ++++-------
 1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/xavp.c b/xavp.c
index 622c058..aac6d21 100644
--- a/xavp.c
+++ b/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;
 		}
 	}




More information about the sr-dev mailing list