diff options
author | Leonard Richardson <leonardr@segfault.org> | 2012-06-30 10:43:47 -0400 |
---|---|---|
committer | Leonard Richardson <leonardr@segfault.org> | 2012-06-30 10:43:47 -0400 |
commit | 7a47c96f352aafcae4ad280e4d3d8456b53d7ffe (patch) | |
tree | 15413efa4810c902b4d3cc5222e905fd6abc8627 /bs4/builder/__init__.py | |
parent | 093ec128d5732b02e75df2566c7db2c6e381d766 (diff) |
Fixed an html5lib tree builder crash which happened when html5lib
moved a tag with a multivalued attribute from one part of the tree to
another. [bug=1019603]
Diffstat (limited to 'bs4/builder/__init__.py')
-rw-r--r-- | bs4/builder/__init__.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/bs4/builder/__init__.py b/bs4/builder/__init__.py index 4c22b86..dc7deb9 100644 --- a/bs4/builder/__init__.py +++ b/bs4/builder/__init__.py @@ -157,7 +157,16 @@ class TreeBuilder(object): # value is a whitespace-separated list of CSS # classes. Split it into a list. value = attrs[cdata_list_attr] - values = whitespace_re.split(value) + if isinstance(value, basestring): + values = whitespace_re.split(value) + else: + # html5lib sometimes calls setAttributes twice + # for the same tag when rearranging the parse + # tree. On the second call the attribute value + # here is already a list. If this happens, + # leave the value alone rather than trying to + # split it again. + values = value attrs[cdata_list_attr] = values return attrs |