diff --git a/src/modules/Parser/html.c b/src/modules/Parser/html.c index aff807bf8994ada79c1fb8f985c0695c7392426d..35b525364856876020d807ea40ef7c89b498e042 100644 --- a/src/modules/Parser/html.c +++ b/src/modules/Parser/html.c @@ -1747,7 +1747,11 @@ static int scan_for_string (struct parser_html_storage *this, TYPE *p, *e; \ struct piece *dst; \ int cdst; \ - if (!scan_forward (feed, c, &feed, &c, &look_for, 1)) return 0; \ + if (!scan_forward (feed, c, &feed, &c, &look_for, 1)) { \ + *destp = feed; \ + *d_p = c; \ + return 0; \ + } \ \ p = (TYPE *) str->str + 1; \ e = (TYPE *) str->str + str->len; \ @@ -1755,7 +1759,12 @@ static int scan_for_string (struct parser_html_storage *this, cdst = c + 1; \ for (; p < e; p++, cdst++) { \ while (cdst == dst->s->len) { \ - if (!(dst = dst->next)) return 0; \ + if (dst->next) dst = dst->next; \ + else { \ + *destp = dst; \ + *d_p = dst->s->len; \ + return 0; \ + } \ cdst = 0; \ } \ if ((p_wchar2) *p != \