@@ -636,29 +636,29 @@ def read_multi(self, environ, keep_blank_values, strict_parsing):
636
636
637
637
# Propagate max_num_fields into the sub class appropriately
638
638
max_num_fields = self .max_num_fields
639
- sub_max_num_fields = self .max_num_fields
640
639
if max_num_fields is not None :
641
- sub_max_num_fields -= len (self .list )
640
+ max_num_fields -= len (self .list )
642
641
643
642
klass = self .FieldStorageClass or self .__class__
644
643
part = klass (self .fp , {}, ib ,
645
644
environ , keep_blank_values , strict_parsing ,
646
- sub_max_num_fields )
645
+ max_num_fields )
647
646
648
647
# Throw first part away
649
648
while not part .done :
650
649
headers = rfc822 .Message (self .fp )
651
650
part = klass (self .fp , headers , ib ,
652
651
environ , keep_blank_values , strict_parsing ,
653
- sub_max_num_fields )
652
+ max_num_fields )
654
653
655
- if max_num_fields is not None and part .list :
656
- max_num_fields -= len (part .list )
657
- sub_max_num_fields -= len (part .list )
654
+ if max_num_fields is not None :
655
+ max_num_fields -= 1
656
+ if part .list :
657
+ max_num_fields -= len (part .list )
658
+ if max_num_fields < 0 :
659
+ raise ValueError ('Max number of fields exceeded' )
658
660
659
661
self .list .append (part )
660
- if max_num_fields is not None and max_num_fields < len (self .list ):
661
- raise ValueError ('Max number of fields exceeded' )
662
662
self .skip_lines ()
663
663
664
664
def read_single (self ):
0 commit comments