Fix ticket #72, (compiler crash on bad code)
authorRobert Bradshaw <robertwb@math.washington.edu>
Wed, 8 Oct 2008 07:05:25 +0000 (00:05 -0700)
committerRobert Bradshaw <robertwb@math.washington.edu>
Wed, 8 Oct 2008 07:05:25 +0000 (00:05 -0700)
Cython/Compiler/Optimize.py

index 07f2e0fb42066cea6dab9d2875d9c3ac2d01946c..c26bd913ad457317f3de86f20d2e4fd84ad077fc 100644 (file)
@@ -39,12 +39,12 @@ class SwitchTransform(Visitor.VisitorTransform):
             if is_common_value(cond.operand1, cond.operand1):
                 if isinstance(cond.operand2, ExprNodes.ConstNode):
                     return cond.operand1, [cond.operand2]
-                elif hasattr(cond.operand2, 'entry') and cond.operand2.entry.is_const:
+                elif hasattr(cond.operand2, 'entry') and cond.operand2.entry and cond.operand2.entry.is_const:
                     return cond.operand1, [cond.operand2]
             if is_common_value(cond.operand2, cond.operand2):
                 if isinstance(cond.operand1, ExprNodes.ConstNode):
                     return cond.operand2, [cond.operand1]
-                elif hasattr(cond.operand1, 'entry') and cond.operand1.entry.is_const:
+                elif hasattr(cond.operand1, 'entry') and cond.operand1.entry and cond.operand1.entry.is_const:
                     return cond.operand2, [cond.operand1]
         elif (isinstance(cond, ExprNodes.BoolBinopNode) 
                 and cond.operator == 'or'):