From 3a5f01cc66f50bf12d02002b4ded3f8aa677113a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lars=20K=C3=BChne?= Date: Thu, 6 Jun 2002 20:13:24 +0000 Subject: [PATCH] fixed NPE for classes in toplevel package when instantiation checks were turned on --- .../puppycrawl/tools/checkstyle/Verifier.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/checkstyle/com/puppycrawl/tools/checkstyle/Verifier.java b/src/checkstyle/com/puppycrawl/tools/checkstyle/Verifier.java index 060e4f623..c1be01f7d 100644 --- a/src/checkstyle/com/puppycrawl/tools/checkstyle/Verifier.java +++ b/src/checkstyle/com/puppycrawl/tools/checkstyle/Verifier.java @@ -1442,12 +1442,16 @@ class Verifier return aClassName; } + final int clsNameLen = aClassName.length(); + final int pkgNameLen = mPkgName.length(); + final Iterator illIter = illegalInsts.iterator(); while (illIter.hasNext()) { final String illegal = (String) illIter.next(); + final int illegalLen = illegal.length(); // class from java.lang - if (((illegal.length() - javaLang.length()) == aClassName.length()) + if (((illegalLen - javaLang.length()) == clsNameLen) && illegal.endsWith(aClassName) && illegal.startsWith(javaLang)) { @@ -1455,8 +1459,15 @@ class Verifier } // class from same package - if (illegal.length() - mPkgName.length() == aClassName.length() + 1 - && illegal.charAt(mPkgName.length()) == '.' + + // the toplevel package (mPkgName == null) is covered by the + // "illegalInsts.contains(aClassName)" check above + + // the test is the "no garbage" version of + // illegal.equals(mPkgName + "." + aClassName) + if (mPkgName != null + && clsNameLen == illegalLen - pkgNameLen - 1 + && illegal.charAt(pkgNameLen) == '.' && illegal.endsWith(aClassName) && illegal.startsWith(mPkgName)) {