diff -w oursgmllib2.py sgmllib.py 63a64 > self.__starttag_text = None 109d109 < k = 0 111d110 < tmp=0 122d120 < tmp = self.updatepos(i, j) 125d122 < startswith = rawdata.startswith 130d126 < tmp = self.updatepos(i, i+1) 135d130 < tmp = self.updatepos(i, k) 141d135 < tmp = self.updatepos(i, k) 149d142 < tmp = self.updatepos(i, k) 160d152 < 162d153 < tmp = self.updatepos(i, k) 164d154 < 169d158 < tmp = self.updatepos(i, k) 178d166 < tmp = self.updatepos(i, k) 181d168 < tmp = self.updatepos(i, k) 183d169 < 190c176 < name = match.group()[2:-1] --- > name = match.group(1) 192,196c178,179 < k = match.end() < if not startswith(';', k-1): < k = k - 1 < tmp = self.updatepos(i, k) < i = k --- > i = match.end(0) > if rawdata[i-1] != ';': i = i-1 202,206c185,186 < k = match.end() < if not startswith(';', k-1): < k = k - 1 < tmp = self.updatepos(i, k) < i = k --- > i = match.end(0) > if rawdata[i-1] != ';': i = i-1 208d187 < 222d200 < 224,225d201 < < 229d204 < tmp = self.updatepos(i, n) 250d224 < __starttag_text = None 454,455d427 < print 'handle data', < print self.getpos() 462,463d433 < print 'datapos ', < print self.getpos() 471d440 < print self.getpos() 477d445 < print self.getpos() 483,484d450 < print 'starttagpos', < print self.getpos() 489,490d454 < print 'endtagpos', < print self.getpos() 495,496d458 < print 'entity', < print self.getpos()