aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libjava/ChangeLog5
-rw-r--r--libjava/java/util/logging/LogManager.java6
2 files changed, 9 insertions, 2 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog
index d34ab27..70a79e0 100644
--- a/libjava/ChangeLog
+++ b/libjava/ChangeLog
@@ -1,3 +1,8 @@
+2004-10-18 Jeroen Frijters <jeroen@frijters.net>
+
+ * java/util/logging/LogManager.java
+ (findAncestor): Fixed IndexOutOfBoundsException.
+
2004-10-18 Michael Koch <konqueror@gmx.de>
* java/io/BufferedInputStream.java: Fixed @author tag.
diff --git a/libjava/java/util/logging/LogManager.java b/libjava/java/util/logging/LogManager.java
index 2475708..c77e086 100644
--- a/libjava/java/util/logging/LogManager.java
+++ b/libjava/java/util/logging/LogManager.java
@@ -351,6 +351,7 @@ public class LogManager
private synchronized Logger findAncestor(Logger child)
{
String childName = child.getName();
+ int childNameLength = childName.length();
Logger best = rootLogger;
int bestNameLength = 0;
@@ -366,9 +367,10 @@ public class LogManager
candName = (String) iter.next();
candNameLength = candName.length();
- if ((candNameLength > bestNameLength)
+ if (candNameLength > bestNameLength
+ && childNameLength > candNameLength
&& childName.startsWith(candName)
- && (childName.charAt(candNameLength) == '.'))
+ && childName.charAt(candNameLength) == '.')
{
cand = (Logger) ((WeakReference) loggers.get(candName)).get();
if ((cand == null) || (cand == child))