#19616: QuerySet.__contains__ tries to check the length of a None
----------------------------------------------+--------------------
     Reporter:  kalugny@…                     |      Owner:  nobody
         Type:  Bug                           |     Status:  new
    Component:  Database layer (models, ORM)  |    Version:  1.4
     Severity:  Normal                        |   Keywords:
 Triage Stage:  Unreviewed                    |  Has patch:  0
Easy pickings:  1                             |      UI/UX:  0
----------------------------------------------+--------------------
 This is the code from QuerySet (version 1.42).
 As you can see by the lines I've bolded, although _result_cache might be
 None, it is still being checked for len()

 def __contains__(self, val):
         # The 'in' operator works without this method, due to __iter__.
 This
         # implementation exists only to shortcut the creation of Model
         # instances, by bailing out early if we find a matching element.
         pos = 0
         '''if self._result_cache is not None:'''
             if val in self._result_cache:
                 return True
             elif self._iter is None:
                 # iterator is exhausted, so we have our answer
                 return False
             # remember not to check these again:
             pos = len(self._result_cache)
         '''else:'''
             # We need to start filling the result cache out. The following
             # ensures that self._iter is not None and self._result_cache
 is not
             # None
             it = iter(self)

         # Carry on, one result at a time.
         while True:
            ''' if len(self._result_cache) <= pos:'''
                 self._fill_cache(num=1)

-- 
Ticket URL: <https://code.djangoproject.com/ticket/19616>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to