Dag Sverre Seljebotn wrote:
Hoyt Koepke wrote:
Hello,
In continuing to play around with the annotation function, I've found
another bug (and I think I have it patched as well). For me, it shows
up when there is an error in my code. It doesn't seem to matter what
that error is, as I've fixed several and still get the same backtrace.
This is in r1071
After running cython -a transforms.pyx, it prints out an error message
and then raises
The problem is that self.last_pos is not always assigned in the
constructor of AnnotationCCodeWriter, which seems to be the case on my
code. I've attached a patch which fixes it for me
(patch-last_pos.diff). In looking at the code, it seems that
I believe the right thing to do here is to copy last_pos in create_from
(see below), but I'm not commiting as I'd like Robert to confirm (as
there's going to be a release today). The cleanup of self.annotator is
correct.
Thanks!
Attaching a patch properly doing the above.
--
Dag Sverre
diff -r 265a5de27a1b Cython/Compiler/Annotate.py
--- a/Cython/Compiler/Annotate.py Mon Aug 18 15:49:36 2008 +0200
+++ b/Cython/Compiler/Annotate.py Mon Aug 18 15:50:03 2008 +0200
@@ -19,8 +19,8 @@ class AnnotationCCodeWriter(CCodeWriter)
def __init__(self, create_from=None, buffer=None, copy_formatting=True):
CCodeWriter.__init__(self, create_from, buffer, copy_formatting=True)
- self.annotation_buffer = StringIO()
if create_from is None:
+ self.annotation_buffer = StringIO()
self.annotations = []
self.last_pos = None
self.code = {}
@@ -28,6 +28,7 @@ class AnnotationCCodeWriter(CCodeWriter)
# When creating an insertion point, keep references to the same database
self.annotation_buffer = create_from.annotation_buffer
self.annotations = create_from.annotations
+ self.last_pos = create_from.last_pos
self.code = create_from.code
def create_new(self, create_from, buffer, copy_formatting):
_______________________________________________
Cython-dev mailing list
[email protected]
http://codespeak.net/mailman/listinfo/cython-dev