- From: Kyle Kartchner <kylek@mycomputer.com>
- Date: Sun, 25 Jun 2000 15:09:00 -0600
- To: html-tidy@w3.org
First off Dave, I want to commend your excellent organization of code, and structure. I'm very impressed with how thought out, and how nicely designed it is. I am coding a daemon that will use tidy's parser, and I found that your data structure was very easy to traverse, so I grabbed it. In being that my program is a daemon, I can't afford any infinite loops. In parsing a user's site I found an infinite loop that was caused by the parser.c ParseNoFrames() function. It would would cause a loop on the following HTML snippet: <noframes> <body bgcolor="#000000" text="#ffffff"> <h1>Need a Frame Capable Browser!</h1> <frame src="title.html" name="p1" scrolling=no> </body> </noframes> This is obviously a poorly written piece of html code, and I'm sure a very rare occurance which is why I'm sure Dave did not find it. I'm not sure that this is how Dave would want to handle this code, but I have a fix (without the warning because I don't use them) below: Old code - 2890- 2891- if ((node->tag == tag_frame || node->tag == tag_frameset)) 2892- { 2893- ReportWarning(lexer, noframes, node, MISSING_ENDTAG_BEFORE); 2894- TrimSpaces(lexer, noframes); 2895- UngetToken(lexer); 2896- return; 2897- } 2898- Fixed code - 2890- 2891- if (node->tag == tag_frameset) 2892- { 2893- { 2894- ReportWarning(lexer, noframes, node, MISSING_ENDTAG_BEFORE); 2895- TrimSpaces(lexer, noframes); 2896- UngetToken(lexer); 2897- return; 2898- } 2899- 2900- if (node->tag == tag_frame) 2901- { 2902- // Didn't worry about a warning message here, but it should have one. Just discard tag. 2903- // Kyle Kartchner 2904- FreeNode(node); 2905- continue; 2906- } 2907- Regards, -- Kyle Kartchner Software Engineer ----------------------------- MyComputer.com tools to power your eBusiness
Received on Sunday, 25 June 2000 17:13:57 UTC