core: avp & pvars assignment fixes & changes
authorAndrei Pelinescu-Onciul <andrei@iptel.org>
Fri, 24 Apr 2009 19:40:26 +0000 (21:40 +0200)
committerAndrei Pelinescu-Onciul <andrei@iptel.org>
Fri, 24 Apr 2009 19:51:47 +0000 (21:51 +0200)
commit0789fd246548cb8287777bbe9f8322cffedc8ad4
tree4f5717cdb225fd28ca66a841e6bfe6224707fc3e
parentd47990275e5f604560d7ef6d93e8f2056110d7c8
core: avp & pvars assignment fixes & changes

- fix: delete avps after finding their new value and not before
  (fixes $v=$v or $v=$avp(v) deleting $v's value)

- when assigning something undefined (like a non-existing avp),
  delete the lvalue.
  E.g.:  $v=$foo  and $ foo undefined => delete/undefine $v
  An expr is undefined only if it consists only on an undefined
  avp or pvar. If it contains more elements it's always defined
  (even if all the elements are undefined).
  E.g: $foo and $bar are undefined => defined $foo == 0, defined
  $bar == 0, but defined ($foo+$bar) == 1.
  An avp is undefined if it doesn't exist or there is some error
  accessing it.
  A pvar is undefined if it's PV_VAL_NULL or there is an error
  getting it's value.
lvalue.c