From 280a61b300a1614f6037efc0902ff7ecf17146e9 Mon Sep 17 00:00:00 2001 From: "Thomas E. Dickey" Date: Wed, 5 Jul 2017 23:04:01 +0000 Subject: [PATCH] snapshot of project "lynx", label v2-8-9dev_15b --- CHANGES | 4 +++- PACKAGE/debian/lynx-dev.lintian-overrides | 2 +- src/HTML.c | 27 ++++++++++++++++------- 3 files changed, 23 insertions(+), 10 deletions(-) diff --git a/CHANGES b/CHANGES index 7f06e953..641bd277 100644 --- a/CHANGES +++ b/CHANGES @@ -1,9 +1,11 @@ --- $LynxId: CHANGES,v 1.910 2017/07/05 20:39:40 tom Exp $ +-- $LynxId: CHANGES,v 1.911 2017/07/05 22:23:00 tom Exp $ =============================================================================== Changes since Lynx 2.8 release =============================================================================== 2017-07-05 (2.8.9dev.16) +* add a check to ensure that HTML_put_string() will not append a chunk onto + itself (report by Ned Williamson) -TD * update et.po, tr.po from http://translationproject.org/latest/lynx diff --git a/PACKAGE/debian/lynx-dev.lintian-overrides b/PACKAGE/debian/lynx-dev.lintian-overrides index 280b562d..a2345b7e 100644 --- a/PACKAGE/debian/lynx-dev.lintian-overrides +++ b/PACKAGE/debian/lynx-dev.lintian-overrides @@ -1,5 +1,5 @@ # Lynx's version-numbering is not understood by lintian, though legal. -lynx-dev: rc-version-greater-than-expected-version 2.8.9dev.15 > 2.8.9 (consider using 2.8.9~dev.15) +lynx-dev: rc-version-greater-than-expected-version # This is intentional because it is referenced from the documentation. lynx-dev: extra-license-file usr/share/doc/lynx-dev/COPYING diff --git a/src/HTML.c b/src/HTML.c index c9ab9395..63d67206 100644 --- a/src/HTML.c +++ b/src/HTML.c @@ -1,5 +1,5 @@ /* - * $LynxId: HTML.c,v 1.173 2017/07/04 20:05:01 tom Exp $ + * $LynxId: HTML.c,v 1.174 2017/07/05 22:48:09 tom Exp $ * * Structured stream to Rich hypertext converter * ============================================ @@ -505,6 +505,8 @@ void HTML_put_character(HTStructured * me, int c) */ void HTML_put_string(HTStructured * me, const char *s) { + HTChunk *target = NULL; + #ifdef USE_PRETTYSRC char *translated_string = NULL; #endif @@ -525,15 +527,15 @@ void HTML_put_string(HTStructured * me, const char *s) break; /* Do Nothing */ case HTML_TITLE: - HTChunkPuts(&me->title, s); + target = &me->title; break; case HTML_STYLE: - HTChunkPuts(&me->style_block, s); + target = &me->style_block; break; case HTML_SCRIPT: - HTChunkPuts(&me->script, s); + target = &me->script; break; case HTML_PRE: /* Formatted text */ @@ -547,20 +549,20 @@ void HTML_put_string(HTStructured * me, const char *s) break; case HTML_OBJECT: - HTChunkPuts(&me->object, s); + target = &me->object; break; case HTML_TEXTAREA: - HTChunkPuts(&me->textarea, s); + target = &me->textarea; break; case HTML_SELECT: case HTML_OPTION: - HTChunkPuts(&me->option, s); + target = &me->option; break; case HTML_MATH: - HTChunkPuts(&me->math, s); + target = &me->math; break; default: /* Free format text? */ @@ -651,6 +653,15 @@ void HTML_put_string(HTStructured * me, const char *s) } /* for */ } } /* end switch */ + + if (target != NULL) { + if (target->data == s) { + CTRACE((tfp, "BUG: appending chunk to itself: `%.*s'\n", + target->size, target->data)); + } else { + HTChunkPuts(target, s); + } + } #ifdef USE_PRETTYSRC if (psrc_convert_string) { psrc_convert_string = FALSE;