From eb6414526f47e06ff95e449d72873228ae169ce3 Mon Sep 17 00:00:00 2001 From: Oleg Krasilnikov Date: Wed, 21 Jun 2006 11:55:46 +0000 Subject: [PATCH] [Bug 147999] CModelBuilder runs into infinite loop Additional check to avoid looping in "nextTable[]" values --- .../parser/org/eclipse/cdt/core/parser/util/CharTable.java | 2 +- .../parser/org/eclipse/cdt/core/parser/util/ObjectTable.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CharTable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CharTable.java index 4d26b788b00..fe849e0a6d1 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CharTable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/CharTable.java @@ -159,7 +159,7 @@ public class CharTable extends HashTable { return i; // Follow the next chain - for (i = nextTable[i] - 1; i >= 0; i = nextTable[i] - 1) + for (i = nextTable[i] - 1; i >= 0 && nextTable[i] != i + 1; i = nextTable[i] - 1) if (CharArrayUtils.equals(buffer, start, len, keyTable[i])) return i; diff --git a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java index 01bdb6db5eb..7e99633714b 100644 --- a/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java +++ b/core/org.eclipse.cdt.core/parser/org/eclipse/cdt/core/parser/util/ObjectTable.java @@ -120,7 +120,7 @@ public abstract class ObjectTable extends HashTable implements Cloneable{ return i; // Follow the next chain - for (i = nextTable[i] - 1; i >= 0; i = nextTable[i] - 1) + for (i = nextTable[i] - 1; i >= 0 && nextTable[i] != i + 1; i = nextTable[i] - 1) if ( buffer.equals( keyTable[i] )) return i;