- From: Philip Taylor <pjt47@cam.ac.uk>
- Date: Thu, 22 May 2008 14:25:18 +0100
- To: Ian Hickson <ian@hixie.ch>
- CC: HTML WG <public-html@w3.org>
Ian Hickson wrote: > I've [...] tried to fix something that I think was wrong > with another part of the algorithm, but I'm not sure that part was > correct. Please let me know if r1667 was completely right. That was changing "7. If the byte at position is not 0x3D (ASCII '='), abort the "get an attribute" algorithm. Move 'position' back to the previous byte. The attribute's name is the value of attribute name, its value is the empty string." to "7. If the byte at position is not 0x3D (ASCII '='), abort the "get an attribute" algorithm. The attribute's name is the value of attribute name, its value is the empty string." Step 7 can only be reached via step 6 ("spaces"), and step 6 can only be reached from "[If the byte at 'position' is a space] Jump to the step below labeled spaces". (By the way, this reminds me why people don't write programs entirely with 'goto' any more.) So, moving 'position' back in step 7 will always move it onto a space character. An attribute will always be returned, and so the code that calls "get an attribute" will always either abort or immediately call "get an attribute" again, and "get an attribute" will always skip over the leading space at 'position'. So I think (not with extreme confidence) that the change to the spec never has any effect at all. (I've also tested the change in my implementation of this algorithm, and can't find any cases where it does have an effect, though they were very non-extensive tests.) -- Philip Taylor pjt47@cam.ac.uk
Received on Thursday, 22 May 2008 13:26:04 UTC