Hi, Please post this on the issue tracker. http://bugs.python.org
On Fri, Dec 5, 2008 at 4:42 AM, <[EMAIL PROTECTED]> wrote: > Hello, > > This concerns a known bug in the frame_setlineno() function for Python > 2.5.x and 2.6.x (maybe in earlier version too). It is not possible to use > this function when the address or line offset are greater than 127. The > problem comes from the lnotab variable which is typed char*, therefore > implicitely signed char*. Any value above 127 becomes a negative number. > > The fix is very simple (applied on the Python 2.6.1 version of the source > code): > > --- frameobject.c Thu Oct 02 19:39:50 2008 > +++ frameobject_fixed.c Fri Dec 05 11:27:42 2008 > @@ -119,8 +119,8 @@ > line = f->f_code->co_firstlineno; > new_lasti = -1; > for (offset = 0; offset < lnotab_len; offset += 2) { > - addr += lnotab[offset]; > - line += lnotab[offset+1]; > + addr += ((unsigned char*)lnotab)[offset]; > + line += ((unsigned char*)lnotab)[offset+1]; > if (line >= new_lineno) { > new_lasti = addr; > new_lineno = line; > -- Cheers, Benjamin Peterson "There's nothing quite as beautiful as an oboe... except a chicken stuck in a vacuum cleaner." _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com