HTML-Parser
view release on metacpan or search on metacpan
}
croak("Can't find '_hparser_xs_state' element in HTML::Parser hash");
return 0;
}
static void
free_pstate(pTHX_ PSTATE* pstate)
{
int i;
SvREFCNT_dec(pstate->buf);
SvREFCNT_dec(pstate->pend_text);
SvREFCNT_dec(pstate->skipped_text);
#ifdef MARKED_SECTION
SvREFCNT_dec(pstate->ms_stack);
#endif
SvREFCNT_dec(pstate->bool_attr_val);
for (i = 0; i < EVENT_COUNT; i++) {
SvREFCNT_dec(pstate->handlers[i].cb);
SvREFCNT_dec(pstate->handlers[i].argspec);
}
SvREFCNT_dec(pstate->report_tags);
SvREFCNT_dec(pstate->ignore_tags);
SvREFCNT_dec(pstate->ignore_elements);
SvREFCNT_dec(pstate->ignoring_element);
SvREFCNT_dec(pstate->tmp);
pstate->signature = 0;
Safefree(pstate);
}
static int
magic_free_pstate(pTHX_ SV *sv, MAGIC *mg)
{
free_pstate(aTHX_ (PSTATE *)mg->mg_ptr);
return 0;
}
#if defined(USE_ITHREADS)
static PSTATE *
dup_pstate(pTHX_ PSTATE *pstate, CLONE_PARAMS *params)
{
PSTATE *pstate2;
int i;
Newz(56, pstate2, 1, PSTATE);
pstate2->signature = pstate->signature;
pstate2->buf = SvREFCNT_inc(sv_dup(pstate->buf, params));
pstate2->offset = pstate->offset;
pstate2->line = pstate->line;
pstate2->column = pstate->column;
pstate2->start_document = pstate->start_document;
pstate2->parsing = pstate->parsing;
pstate2->eof = pstate->eof;
pstate2->literal_mode = pstate->literal_mode;
pstate2->is_cdata = pstate->is_cdata;
pstate2->no_dash_dash_comment_end = pstate->no_dash_dash_comment_end;
pstate2->pending_end_tag = pstate->pending_end_tag;
pstate2->pend_text = SvREFCNT_inc(sv_dup(pstate->pend_text, params));
pstate2->pend_text_is_cdata = pstate->pend_text_is_cdata;
pstate2->pend_text_offset = pstate->pend_text_offset;
pstate2->pend_text_line = pstate->pend_text_offset;
pstate2->pend_text_column = pstate->pend_text_column;
pstate2->skipped_text = SvREFCNT_inc(sv_dup(pstate->skipped_text, params));
#ifdef MARKED_SECTION
pstate2->ms = pstate->ms;
pstate2->ms_stack =
(AV *)SvREFCNT_inc(sv_dup((SV *)pstate->ms_stack, params));
pstate2->marked_sections = pstate->marked_sections;
#endif
pstate2->strict_comment = pstate->strict_comment;
pstate2->strict_names = pstate->strict_names;
pstate2->strict_end = pstate->strict_end;
pstate2->xml_mode = pstate->xml_mode;
pstate2->unbroken_text = pstate->unbroken_text;
pstate2->attr_encoded = pstate->attr_encoded;
pstate2->case_sensitive = pstate->case_sensitive;
pstate2->closing_plaintext = pstate->closing_plaintext;
pstate2->utf8_mode = pstate->utf8_mode;
pstate2->empty_element_tags = pstate->empty_element_tags;
pstate2->xml_pic = pstate->xml_pic;
pstate2->backquote = pstate->backquote;
pstate2->bool_attr_val =
SvREFCNT_inc(sv_dup(pstate->bool_attr_val, params));
for (i = 0; i < EVENT_COUNT; i++) {
pstate2->handlers[i].cb =
SvREFCNT_inc(sv_dup(pstate->handlers[i].cb, params));
pstate2->handlers[i].argspec =
SvREFCNT_inc(sv_dup(pstate->handlers[i].argspec, params));
}
pstate2->argspec_entity_decode = pstate->argspec_entity_decode;
pstate2->report_tags =
(HV *)SvREFCNT_inc(sv_dup((SV *)pstate->report_tags, params));
pstate2->ignore_tags =
(HV *)SvREFCNT_inc(sv_dup((SV *)pstate->ignore_tags, params));
pstate2->ignore_elements =
(HV *)SvREFCNT_inc(sv_dup((SV *)pstate->ignore_elements, params));
pstate2->ignoring_element =
SvREFCNT_inc(sv_dup(pstate->ignoring_element, params));
pstate2->ignore_depth = pstate->ignore_depth;
if (params->flags & CLONEf_JOIN_IN) {
pstate2->entity2char =
get_hv("HTML::Entities::entity2char", GV_ADD);
} else {
pstate2->entity2char = (HV *)sv_dup((SV *)pstate->entity2char, params);
}
pstate2->tmp = SvREFCNT_inc(sv_dup(pstate->tmp, params));
return pstate2;
}
static int
magic_dup_pstate(pTHX_ MAGIC *mg, CLONE_PARAMS *params)
( run in 0.564 second using v1.01-cache-2.11-cpan-cdf2f3d4e48 )