summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdrian Thurston <thurston@complang.org>2009-03-04 04:14:46 +0000
committerAdrian Thurston <thurston@complang.org>2009-03-04 04:14:46 +0000
commit82123d34d3bc28bce9e75be756acc016e6560561 (patch)
treefa0522765c782c77a7f6727df294e270af14eec7
parentdb51647c541b6a0827d2791e82232a55dc140aed (diff)
downloadcolm-82123d34d3bc28bce9e75be756acc016e6560561.tar.gz
Bug fix: match_text was getting into the list of locals. It loaded with a
special bytecode and is not on the stack.
-rw-r--r--colm/compile.cpp4
1 files changed, 3 insertions, 1 deletions
diff --git a/colm/compile.cpp b/colm/compile.cpp
index d4d2f503..19f42293 100644
--- a/colm/compile.cpp
+++ b/colm/compile.cpp
@@ -2091,7 +2091,9 @@ void ParseData::findLocalTrees( CharSet &trees )
* the frame is is cleaned and so it must survive. */
for ( ObjFieldMap::Iter of = *curLocalFrame->objFieldMap; of.lte(); of++ ) {
ObjField *el = of->value;
- if ( !el->isLhsEl && el->beenReferenced ) {
+ /* FIXME: This test needs to be improved. Match_text was getting
+ * through before useOffset was tested. What will? */
+ if ( el->useOffset && !el->isLhsEl && el->beenReferenced ) {
UniqueType *ut = el->typeRef->lookupType( this );
if ( ut->typeId == TYPE_TREE || ut->typeId == TYPE_PTR )
trees.insert( el->offset );