diff options
author | nyamatongwe <unknown> | 2001-02-03 01:17:13 +0000 |
---|---|---|
committer | nyamatongwe <unknown> | 2001-02-03 01:17:13 +0000 |
commit | e0f60300ff7bc4d06f863ba084e6be80bb8faae8 (patch) | |
tree | 9d2d53413c0fc22b2cc71d4083a43b83134969a4 /src/PropSet.cxx | |
parent | f8a2076675b20171e976807c67d09191bf15b190 (diff) | |
download | scintilla-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.cxx | 10 |
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()); } |