[Python-Dev] FW: static analysis of python source

Kristján Valur Jónsson kristjan at ccpgames.com
Fri Apr 20 15:57:55 CEST 2007


I just ran some static analysis of the python core 2.5 with Visual Studio team system.
There was the stray error discovered.  I will update the most obvious ones.

Some questions, though:

This code in binascii.c, line 1168 (and again 1238) is wrong:
while (in < datalen) {
            if ((data[in] > 126) ||
                (data[in] == '=') ||
                (header && data[in] == '_') ||
                ((data[in] == '.') && (linelen == 1)) ||
                (!istext && ((data[in] == '\r') || (data[in] == '\n'))) ||
                ((data[in] == '\t' || data[in] == ' ') && (in + 1 == datalen)) ||
                ((data[in] < 33) &&
                 (data[in] != '\r') && (data[in] != '\n') &&
                 (quotetabs && ((data[in] != '\t') || (data[in] != ' ')))))
      The final ((data[in] != '\t') || (data[in] != ' ')) is always true.  What is the right form? ((data[in] == '\t') || (data[in] == ' '))  ?

1)

2)  There is a lot of code that goes like this:
f->buf = PyMem_Realloc(f->buf, newsize);
if (!f->buf)
    return PyErr_NoMemory(), 0;
Now,  this if Realloc fails, this causes a memory leak.  Is there any interest to fix this flawed pattern wholesale?
Cheers,
Kristjan


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/python-dev/attachments/20070420/82e29ac3/attachment-0001.htm 


More information about the Python-Dev mailing list