File tree Expand file tree Collapse file tree 2 files changed +17
-0
lines changed
Expand file tree Collapse file tree 2 files changed +17
-0
lines changed Original file line number Diff line number Diff line change @@ -55,6 +55,9 @@ def getter(self):
5555 if closed_only and not self ._closed :
5656 raise AttributeError ("can only get %r on a closed file" %
5757 field_name )
58+ # Protect against PHP-237
59+ if field_name == 'length' :
60+ return self ._file .get (field_name , 0 )
5861 return self ._file .get (field_name , None )
5962
6063 def setter (self , value ):
Original file line number Diff line number Diff line change @@ -289,6 +289,20 @@ def test_put_unicode(self):
289289 self .assertEqual (u"aé" .encode ("iso-8859-1" ), self .fs .get (oid ).read ())
290290 self .assertEqual ("iso-8859-1" , self .fs .get (oid ).encoding )
291291
292+ def test_missing_length_iter (self ):
293+ # Test fix that guards against PHP-237
294+ self .fs .put ("" , filename = "empty" )
295+ doc = self .db .fs .files .find_one ({"filename" : "empty" })
296+ doc .pop ("length" )
297+ self .db .fs .files .save (doc )
298+ f = self .fs .get_last_version (filename = "empty" )
299+
300+ def iterate_file (grid_file ):
301+ for chunk in grid_file :
302+ pass
303+ return True
304+
305+ self .assertTrue (iterate_file (f ))
292306
293307if __name__ == "__main__" :
294308 unittest .main ()
You can’t perform that action at this time.
0 commit comments