about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorThomas E. Dickey <dickey@invisible-island.net>2017-07-05 23:04:01 +0000
committerThomas E. Dickey <dickey@invisible-island.net>2017-07-05 23:04:01 +0000
commit4b84022da163df7eff5a1518b088be14be926d4c (patch)
tree962a798808f5a1a00a1adcc843e6537253ef6484
parentd5342a3563fd6337c86312dd7ee27ae162edd5a3 (diff)
downloadlynx-snapshots-4b84022da163df7eff5a1518b088be14be926d4c.tar.gz
snapshot of project "lynx", label v2-8-9dev_15b
-rw-r--r--CHANGES4
-rw-r--r--PACKAGE/debian/lynx-dev.lintian-overrides2
-rw-r--r--src/HTML.c27
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;