Skip to content

Commit 25fef09

Browse files
committed
Fixed the problem of parsing chunks when there was a script tag.
1 parent b8b6ca6 commit 25fef09

File tree

1 file changed

+27
-31
lines changed

1 file changed

+27
-31
lines changed

source/myhtml/tokenizer_script.c

Lines changed: 27 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ size_t myhtml_tokenizer_state_script_data_end_tag_name(myhtml_tree_t* tree, myht
104104
{
105105
if(myhtml_whithspace(html[html_offset], ==, ||))
106106
{
107-
if((html_offset - token_node->str.length) != 6) {
107+
if(((html_offset + tree->global_offset) - token_node->str.length) != 6) {
108108
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA;
109109
html_offset++;
110110
break;
@@ -121,10 +121,10 @@ size_t myhtml_tokenizer_state_script_data_end_tag_name(myhtml_tree_t* tree, myht
121121
return 0;
122122
}
123123

124-
token_node->raw_begin = tmp_size;
125-
token_node->raw_length = 6;
126-
token_node->tag_id = MyHTML_TAG_SCRIPT;
127-
token_node->type = MyHTML_TOKEN_TYPE_CLOSE;
124+
token_node->raw_begin = tmp_size;
125+
token_node->raw_length = 6;
126+
token_node->tag_id = MyHTML_TAG_SCRIPT;
127+
token_node->type = MyHTML_TOKEN_TYPE_CLOSE;
128128

129129
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_NAME;
130130
}
@@ -137,7 +137,7 @@ size_t myhtml_tokenizer_state_script_data_end_tag_name(myhtml_tree_t* tree, myht
137137
}
138138
else if(html[html_offset] == '/')
139139
{
140-
if((html_offset - token_node->str.length) != 6) {
140+
if(((html_offset + tree->global_offset) - token_node->str.length) != 6) {
141141
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA;
142142
html_offset++;
143143
break;
@@ -154,10 +154,10 @@ size_t myhtml_tokenizer_state_script_data_end_tag_name(myhtml_tree_t* tree, myht
154154
return 0;
155155
}
156156

157-
token_node->raw_begin = tmp_size;
158-
token_node->raw_length = 6;
157+
token_node->raw_begin = tmp_size;
158+
token_node->raw_length = 6;
159159
token_node->tag_id = MyHTML_TAG_SCRIPT;
160-
token_node->type = MyHTML_TOKEN_TYPE_CLOSE|MyHTML_TOKEN_TYPE_CLOSE_SELF;
160+
token_node->type = MyHTML_TOKEN_TYPE_CLOSE|MyHTML_TOKEN_TYPE_CLOSE_SELF;
161161

162162
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_NAME;
163163
}
@@ -170,7 +170,7 @@ size_t myhtml_tokenizer_state_script_data_end_tag_name(myhtml_tree_t* tree, myht
170170
}
171171
else if(html[html_offset] == '>')
172172
{
173-
if((html_offset - token_node->str.length) != 6) {
173+
if(((html_offset + tree->global_offset) - token_node->str.length) != 6) {
174174
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA;
175175
html_offset++;
176176
break;
@@ -187,10 +187,10 @@ size_t myhtml_tokenizer_state_script_data_end_tag_name(myhtml_tree_t* tree, myht
187187
return 0;
188188
}
189189

190-
token_node->raw_begin = tmp_size;
191-
token_node->raw_length = 6;
190+
token_node->raw_begin = tmp_size;
191+
token_node->raw_length = 6;
192192
token_node->tag_id = MyHTML_TAG_SCRIPT;
193-
token_node->type = MyHTML_TOKEN_TYPE_CLOSE;
193+
token_node->type = MyHTML_TOKEN_TYPE_CLOSE;
194194

195195
html_offset++;
196196

@@ -280,7 +280,7 @@ size_t myhtml_tokenizer_state_script_data_escaped_end_tag_name(myhtml_tree_t* tr
280280
{
281281
if(myhtml_whithspace(html[html_offset], ==, ||))
282282
{
283-
if((html_offset - token_node->str.length) != 6) {
283+
if(((html_offset + tree->global_offset) - token_node->str.length) != 6) {
284284
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED;
285285
html_offset++;
286286
break;
@@ -297,10 +297,10 @@ size_t myhtml_tokenizer_state_script_data_escaped_end_tag_name(myhtml_tree_t* tr
297297
return 0;
298298
}
299299

300-
token_node->raw_begin = tmp_size;
301-
token_node->raw_length = 6;
300+
token_node->raw_begin = tmp_size;
301+
token_node->raw_length = 6;
302302
token_node->tag_id = MyHTML_TAG_SCRIPT;
303-
token_node->type = MyHTML_TOKEN_TYPE_CLOSE;
303+
token_node->type = MyHTML_TOKEN_TYPE_CLOSE;
304304

305305
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_NAME;
306306
}
@@ -313,7 +313,7 @@ size_t myhtml_tokenizer_state_script_data_escaped_end_tag_name(myhtml_tree_t* tr
313313
}
314314
else if(html[html_offset] == '/')
315315
{
316-
if((html_offset - token_node->str.length) != 6) {
316+
if(((html_offset + tree->global_offset) - token_node->str.length) != 6) {
317317
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED;
318318
html_offset++;
319319
break;
@@ -330,10 +330,10 @@ size_t myhtml_tokenizer_state_script_data_escaped_end_tag_name(myhtml_tree_t* tr
330330
return 0;
331331
}
332332

333-
token_node->raw_begin = tmp_size;
334-
token_node->raw_length = 6;
333+
token_node->raw_begin = tmp_size;
334+
token_node->raw_length = 6;
335335
token_node->tag_id = MyHTML_TAG_SCRIPT;
336-
token_node->type = MyHTML_TOKEN_TYPE_CLOSE|MyHTML_TOKEN_TYPE_CLOSE_SELF;
336+
token_node->type = MyHTML_TOKEN_TYPE_CLOSE|MyHTML_TOKEN_TYPE_CLOSE_SELF;
337337

338338
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_BEFORE_ATTRIBUTE_NAME;
339339
}
@@ -346,7 +346,7 @@ size_t myhtml_tokenizer_state_script_data_escaped_end_tag_name(myhtml_tree_t* tr
346346
}
347347
else if(html[html_offset] == '>')
348348
{
349-
if((html_offset - token_node->str.length) != 6) {
349+
if(((html_offset + tree->global_offset) - token_node->str.length) != 6) {
350350
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED;
351351
html_offset++;
352352
break;
@@ -363,10 +363,10 @@ size_t myhtml_tokenizer_state_script_data_escaped_end_tag_name(myhtml_tree_t* tr
363363
return 0;
364364
}
365365

366-
token_node->raw_begin = tmp_size;
367-
token_node->raw_length = 6;
366+
token_node->raw_begin = tmp_size;
367+
token_node->raw_length = 6;
368368
token_node->tag_id = MyHTML_TAG_SCRIPT;
369-
token_node->type = MyHTML_TOKEN_TYPE_CLOSE;
369+
token_node->type = MyHTML_TOKEN_TYPE_CLOSE;
370370

371371
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_DATA;
372372

@@ -446,7 +446,7 @@ size_t myhtml_tokenizer_state_script_data_double_escape_start(myhtml_tree_t* tre
446446
{
447447
if(myhtml_whithspace(html[html_offset], ==, ||) || html[html_offset] == '/' || html[html_offset] == '>')
448448
{
449-
if((html_offset - token_node->str.length) != 6) {
449+
if(((html_offset + tree->global_offset) - token_node->str.length) != 6) {
450450
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA_ESCAPED;
451451
html_offset++;
452452
break;
@@ -564,7 +564,7 @@ size_t myhtml_tokenizer_state_script_data_double_escape_end(myhtml_tree_t* tree,
564564
{
565565
if(myhtml_whithspace(html[html_offset], ==, ||) || html[html_offset] == '/' || html[html_offset] == '>')
566566
{
567-
if((html_offset - token_node->str.length) != 6) {
567+
if(((html_offset + tree->global_offset) - token_node->str.length) != 6) {
568568
myhtml_tokenizer_state_set(tree) = MyHTML_TOKENIZER_STATE_SCRIPT_DATA_DOUBLE_ESCAPED;
569569
html_offset++;
570570
break;
@@ -594,7 +594,3 @@ size_t myhtml_tokenizer_state_script_data_double_escape_end(myhtml_tree_t* tree,
594594

595595
return html_offset;
596596
}
597-
598-
599-
600-

0 commit comments

Comments
 (0)