phingofficial/phing — pull request #249 by HuffAndPuff (2013-11-22 03:21:40+00:00)
Title: Fix for undetected circular definitions when resolving properties.

PropertyTask::resolveAllProperties checks for circularly defined properties by comparing the property being resolved against each new one added. This way, a circular chain like in this .properties file is detected:
```
A=${B}
B=${A}
```

However it fails to detect this one:
```
A=${B}
B=${C}
C=${B}
```
It will forever check A==B and A==C without ever breaking out.

With this commit, it checks against all properties used to resolve the current one. I'm *almost* sure this will detect any circular definition. It fixes the hangs I found anyway.