commit:     0887d95d288226c52c1d5610b514d41a624eadb7
Author:     Zac Medico <zmedico <AT> gentoo <DOT> org>
AuthorDate: Tue Feb 24 05:34:50 2015 +0000
Commit:     Zac Medico <zmedico <AT> gentoo <DOT> org>
CommitDate: Tue Feb 24 17:40:25 2015 +0000
URL:        
http://sources.gentoo.org/gitweb/?p=proj/portage.git;a=commit;h=0887d95d

use_reduce: support non-string token_class (bug 541198)

Do not assume that token_class returns a basestring.

X-Gentoo-Bug: 541198
X-Gentoo-Bug-URL: https://bugs.gentoo.org/show_bug.cgi?id=541198
Acked-by: Brian Dolbec <dolsen <AT> gentoo.org>

---
 pym/portage/dep/__init__.py | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/pym/portage/dep/__init__.py b/pym/portage/dep/__init__.py
index e2e416c..a8c748d 100644
--- a/pym/portage/dep/__init__.py
+++ b/pym/portage/dep/__init__.py
@@ -558,7 +558,8 @@ def use_reduce(depstr, uselist=[], masklist=[], 
matchall=False, excludeall=[], i
                                                stack[level].extend(l)
                                        continue
 
-                               if stack[level]:
+                               if stack[level] and isinstance(stack[level][-1],
+                                       basestring):
                                        if stack[level][-1] == "||" and not l:
                                                #Optimize: || ( ) -> .
                                                stack[level].pop()
@@ -583,7 +584,8 @@ def use_reduce(depstr, uselist=[], masklist=[], 
matchall=False, excludeall=[], i
                                        #ends in a non-operator. This is almost 
equivalent to stack[level][-1]=="||",
                                        #expect that it skips empty levels.
                                        while k>=0:
-                                               if stack[k]:
+                                               if stack[k] and 
isinstance(stack[k][-1],
+                                                       basestring):
                                                        if stack[k][-1] == "||":
                                                                return k
                                                        elif stack[k][-1][-1] 
!= "?":

Reply via email to