astrand / pyobfuscate

pyobfuscate
GNU General Public License v2.0
606 stars 161 forks source link

problem with lambda & list comprehension #5

Open astrand opened 12 years ago

astrand commented 12 years ago

Moved from http://bugzilla.lysator.liu.se/show_bug.cgi?id=1603:

Dear Sirs:

the following Python code line

f = lambda x: [v for v in x]

does not get through the pyobfuscate and generates an error when compiled (see below traceback report). Best regards,

Marco Lombardi


Traceback (most recent call last): File "/Users/mlombard/bin/pyobfuscate", line 1101, in ? main() File "/Users/mlombard/bin/pyobfuscate", line 1078, in main cw = CSTWalker(source_no_encoding, pae.pubapi) File "/Users/mlombard/bin/pyobfuscate", line 125, in init self.walk(elements, [self.symtab]) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 211, in walk self.handle_lambdef(elements, symtabs) File "/Users/mlombard/bin/pyobfuscate", line 633, in handle_lambdef self.walk(node, symtabs + [lambdatab]) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 187, in walk self.handle_power(elements, symtabs) File "/Users/mlombard/bin/pyobfuscate", line 662, in handle_power self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 203, in walk self.handle_atom(elements, symtabs) File "/Users/mlombard/bin/pyobfuscate", line 476, in handle_atom self.walk(node, symtabs) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 214, in walk self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 187, in walk self.handle_power(elements, symtabs) File "/Users/mlombard/bin/pyobfuscate", line 662, in handle_power self.walk(node, symtabs, functioncall) File "/Users/mlombard/bin/pyobfuscate", line 203, in walk self.handle_atom(elements, symtabs) File "/Users/mlombard/bin/pyobfuscate", line 431, in handle_atom s = tab.lookup(id) File "/Users/mlombard/bin/pyobfuscate", line 107, in lookup return self.symtabs[0].lookup(name) File "/Library/Frameworks/Python.framework/Versions/2.4/lib/python2.4/symtable.py", line 107, in lookup flags = self._table.symbols[name] KeyError: 'v'