On 04/06/2013 10:14, Ali Ebrahimi wrote:
:


the cause of this error is this new changeset:

4802647: Throw required NPEs from removeAll()/retainAll()

current code assume that collection.removeAll(null) doesn't do anything.
but with this changeset produces NullPointerException that doesn't handled.

following is part of source code org/antlr/tool/CompositeGrammar.java
(see********
)

   217          /** Get delegates below direct delegates of g */
   218          public List<Grammar>  getIndirectDelegates(Grammar g) {
   219                  List<Grammar>  direct = getDirectDelegates(g);
   220                  List<Grammar>  delegates = getDelegates(g);  221
                delegates.removeAll(direct);********
   222                  return delegates;
   223          }
   224
   225          /** Return list of delegate grammars from root down to g.
   226           *  Order is root, ..., g.parent.  (g not included).
   227           */
   228          public List<Grammar>  getDelegators(Grammar g) {
   229                  if ( g==delegateGrammarTreeRoot.grammar ) {
   230                          return null;**********  231             }
   232                  List<Grammar>  grammars = new ArrayList();
   233                  CompositeGrammarTree t = 
delegateGrammarTreeRoot.findNode(g);
   234                  // walk backwards to root, collecting grammars
   235                  CompositeGrammarTree p = t.parent;
   236                  while ( p!=null ) {
   237                          grammars.add(0, p.grammar); // add to head so 
in order later
   238                          p = p.parent;
   239                  }
   240                  return grammars;  241           }


So this changeset at least breaks 'antlr' third-party library and any apps
depends on.
Thanks for the bug report. It does seem to have exposed a bug in antlr. Kevin Rushforth (FX) and Mike Duigou have been looking into the same thing via 8015656.

-Alan.

Reply via email to