From fc2d83400b679ec15cbf19264a92e525af1842a0 Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Fri, 13 Sep 2013 12:06:26 +0000 Subject: [PATCH] LUCENE-5207: Remove stupidity... :( git-svn-id: https://svn.apache.org/repos/asf/lucene/dev/branches/lucene5207@1522888 13f79535-47bb-0310-9956-ffa450edef68 --- .../apache/lucene/expressions/js/JavascriptCompiler.java | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptCompiler.java b/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptCompiler.java index 1978dd84565..c045cdcfc31 100644 --- a/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptCompiler.java +++ b/lucene/expressions/src/java/org/apache/lucene/expressions/js/JavascriptCompiler.java @@ -116,6 +116,8 @@ public class JavascriptCompiler { } } + private static final int MAX_CLASS_NAME_LENGTH = 1024; + private static final String EXPRESSION_CLASS_PREFIX = JavascriptCompiler.class.getPackage().getName() + ".Expr_"; private static final String COMPILED_EXPRESSION_INTERNAL = Type.getInternalName(Expression.class); @@ -184,9 +186,9 @@ public class JavascriptCompiler { } private String createClassName(String sourceText) { - final StringBuilder sb = new StringBuilder(sourceText.length() / 2); + final StringBuilder sb = new StringBuilder(Math.min(sourceText.length() / 2, MAX_CLASS_NAME_LENGTH)); boolean wasIdentifierPart = true; - for (int i = 0, c = sourceText.length(); i < c; i++) { + for (int i = 0, c = sourceText.length(); i < c && sb.length() < MAX_CLASS_NAME_LENGTH; i++) { final char ch = sourceText.charAt(i); if (Character.isJavaIdentifierPart(ch)) { sb.append(ch); @@ -196,8 +198,6 @@ public class JavascriptCompiler { wasIdentifierPart = false; } } - // limit maximum length, theoretically 65536 is allowed in constant pool (in UTF-8 format). - if (sb.length() > 1204) sb.setLength(1024); // remove trailing underscores for (int i = sb.length() - 1; i >= 0; i--) { if (sb.charAt(i) == '_') {