aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/PropSet.cxx
diff options
context:
space:
mode:
authornyamatongwe <unknown>2001-02-03 01:17:13 +0000
committernyamatongwe <unknown>2001-02-03 01:17:13 +0000
commite0f60300ff7bc4d06f863ba084e6be80bb8faae8 (patch)
tree9d2d53413c0fc22b2cc71d4083a43b83134969a4 /src/PropSet.cxx
parentf8a2076675b20171e976807c67d09191bf15b190 (diff)
downloadscintilla-mirror-e0f60300ff7bc4d06f863ba084e6be80bb8faae8.tar.gz
Fixed infinite recursion when a value contains a reference to itself.
Diffstat (limited to 'src/PropSet.cxx')
-rw-r--r--src/PropSet.cxx10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/PropSet.cxx b/src/PropSet.cxx
index 2799e3c3e..61aa7e169 100644
--- a/src/PropSet.cxx
+++ b/src/PropSet.cxx
@@ -96,6 +96,16 @@ SString PropSet::Get(const char *key) {
SString PropSet::GetExpanded(const char *key) {
SString val = Get(key);
+ const char *var = strstr(val.c_str(), "$(");
+ while (var) {
+ if (isprefix(var+2, key) && (var[2 + strlen(key)] == ')')) {
+ // Found $(key) which would lead to an infinite loop so exit
+ return val;
+ }
+ var = strstr(var + 2, ")");
+ if (var)
+ var = strstr(var + 1, "$(");
+ }
return Expand(val.c_str());
}