changeset: 303977:ba53a6c2e25a branch: release81 tag: tip user: Petr Kudryavtsev date: Fri Nov 13 17:52:18 2015 +0300 summary: Fixed #256549 - java.io.UTFDataFormatException: encoded string too long: 400008 bytes diff -r c90844d06dc5 -r ba53a6c2e25a cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/FunctionImpl.java --- a/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/FunctionImpl.java Fri Nov 13 14:03:27 2015 +0300 +++ b/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/FunctionImpl.java Fri Nov 13 17:52:18 2015 +0300 @@ -117,6 +117,10 @@ implements CsmFunction, Disposable, RawNamable, CsmTemplate { private static final Logger LOG = Logger.getLogger(FunctionImpl.class.getName()); + + protected static final int UID_EXTRA_SUFFIX_MAX_LENGTH = 64; + + protected static final String UID_EXTRA_SUFFIX_TOO_LONG = ""; // NOI18N /*package*/ static final String OPERATOR = "operator"; // NOI18N; @@ -216,11 +220,17 @@ stopAt = AstUtil.findChildOfType(param, CPPTokenTypes.CSM_PARMLIST); } ASTSignatureStringizer stringizer = new ASTSignatureStringizer(stopAt); - AstUtil.visitAST(stringizer, param); + AstUtil.visitAST(stringizer, param); if (!first) { sb.append(","); // NOI18N } - sb.append(stringizer.getText()); + String stringParam = stringizer.getText(); + if ((sb.length() + stringParam.length()) < UID_EXTRA_SUFFIX_MAX_LENGTH) { + sb.append(stringParam); + } else { + sb.append(UID_EXTRA_SUFFIX_TOO_LONG); + break; + } first = false; } while ((param = AstUtil.findSiblingOfType(param.getNextSibling(), CPPTokenTypes.CSM_PARAMETER_DECLARATION)) != null); sb.append(")"); // NOI18N diff -r c90844d06dc5 -r ba53a6c2e25a cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/MethodImpl.java --- a/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/MethodImpl.java Fri Nov 13 14:03:27 2015 +0300 +++ b/cnd.modelimpl/src/org/netbeans/modules/cnd/modelimpl/csm/MethodImpl.java Fri Nov 13 17:52:18 2015 +0300 @@ -240,7 +240,11 @@ if (funSuffix != null) { sb.append(funSuffix); } - return sb.toString(); + String mtdSuffix = sb.toString(); + if (mtdSuffix.length() > UID_EXTRA_SUFFIX_MAX_LENGTH) { + mtdSuffix = mtdSuffix.substring(0, UID_EXTRA_SUFFIX_MAX_LENGTH) + UID_EXTRA_SUFFIX_TOO_LONG; + } + return mtdSuffix; } } return funSuffix;