[PyQt] pylupdate bug: infinite loop

Giovanni Bajo rasky at develer.com
Mon Jun 18 15:39:08 BST 2007

Hi Phil,

I found a bug in pylupdate. Try feeding it with the following file:

def foo():
    infinite loop trigger!

and the following project file:

SOURCES = crasher.py

pylupdate enters an infinite loop. By doing some debugging, I think it's 
related to this while loop, in fetchtr.cpp:

     if (!yyCodecForSource) {
     } else {
         QByteArray originalBytes;
         while ( yyCh != EOF && yyCh != '\n' && yyCh != '"' && yyCh != 
'\\' ) {
             if ( yyParsingUtf8 && yyCh >= 0x80 && !quiet) {
                 qWarning( "%s:%d: Non-ASCII character detected in 
trUtf8 string",
                         (const char *) yyFileName, yyLineNo );
                 quiet = true;
             originalBytes += (char)yyCh;
             yyCh = getChar();

         QString unicodeStr = yyCodecForSource->toUnicode(originalBytes);
         QByteArray convertedBytes;

The while() loop is supposed to keep fetching bytes until it finds a 
special character that needs to be handled differently. The problem is 
that, within triple-quoted strings, '\n' is not a special character.

I tried fixing it (by guarding the \n check with a check to 
singleQuote), but it didn't work out. I'm sure you know how to fix it.

(BTW: too bad you can't simply import ast/compiler and be done with the 
Giovanni Bajo

More information about the PyQt mailing list