[antlr-interest] [PATCH] ANTLR C++ RefAST operator=
    aliguori123 
    ajl13 at bellatlantic.net
       
    Fri Feb  1 17:48:10 PST 2002
    
    
  
GDB + C++ + -O2 == Major Headache...
I am still not sure exactly the depth of this and if I was just doing
some very bad things but I ran into a few infinite loops because the
operator='s are not checking for self assignment.  
While I'm not sure if I ran into this because my code was horribly
messed up, I know that reference counted objects have to check for
self assignment :)  I've made that mistake all too often.
Enclosed is a patch against 2.7.1 (the problem still exists in
2.7.2a2).
I am not sure how to submit patchs/bug reports or if there is a
separate maintainer of the C++ lib so I apologize if this is the wrong
place for this.
I am really loving ANTLR though!  Even though I spent a few hours
tracking down some nasty bugs, I more than saved it with the tree
walkers.
Regards,
Anthony Liguori
<-- BEGIN PATCH -->
2002-02-01 20:40 diff -rl antlr-2.7.1/lib/cpp/antlr/ASTRefCount.hpp
antlr-2.7.1-al/lib/cpp/antlr/ASTRefCount.hpp Page 1
51a52
>         static bool compareRef(const ASTRef* lhs, const AST* rhs);
78a80
>                 if (ASTRef::compareRef(ref, other)) return *this;
85a88
> 	        if (this == &other) return *this;
104a108,109
> 
> 
 2002-02-01 20:40 diff -rl antlr-2.7.1/lib/cpp/antlr/RefCount.hpp
antlr-2.7.1-al/lib/cpp/antlr/RefCount.hpp Page 1
70a71
> 	        if (this == &other) return *this;
 2002-02-01 20:40 diff -rl antlr-2.7.1/lib/cpp/src/ASTRefCount.cpp
antlr-2.7.1-al/lib/cpp/src/ASTRefCount.cpp Page 1
60a61,65
> bool ASTRef::compareRef(const ASTRef* lhs, const AST* rhs)
> {
>   return (lhs == (rhs ? rhs->ref : 0));
> }
>
<-- END PATCH -->
 
Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/ 
    
    
More information about the antlr-interest
mailing list