]> git.cameronkatri.com Git - mandoc.git/blobdiff - term_ascii.c
The wcwidth(3) of Plane 15 and Plane 16 Private Use Characters
[mandoc.git] / term_ascii.c
index 4e06a73978b3db720deecbcdc783b501374a76a9..bf7e9b639e04e39385196b28a40145b87fabf041 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: term_ascii.c,v 1.65 2020/09/06 14:45:22 schwarze Exp $ */
+/* $Id: term_ascii.c,v 1.66 2020/09/09 13:45:05 schwarze Exp $ */
 /*
  * Copyright (c) 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
  * Copyright (c) 2014,2015,2017,2018,2020 Ingo Schwarze <schwarze@openbsd.org>
@@ -245,7 +245,14 @@ ascii_advance(struct termp *p, size_t len)
 {
        size_t          i;
 
-       assert(len < UINT16_MAX);
+       /*
+        * XXX We used to have "assert(len < UINT16_MAX)" here.
+        * that is not quite right because the input document
+        * can trigger that by merely providing large input.
+        * For now, simply truncate.
+        */
+       if (len > 256)
+               len = 256;
        for (i = 0; i < len; i++)
                putchar(' ');
 }
@@ -383,7 +390,14 @@ locale_advance(struct termp *p, size_t len)
 {
        size_t          i;
 
-       assert(len < UINT16_MAX);
+       /*
+        * XXX We used to have "assert(len < UINT16_MAX)" here.
+        * that is not quite right because the input document
+        * can trigger that by merely providing large input.
+        * For now, simply truncate.
+        */
+       if (len > 256)
+               len = 256;
        for (i = 0; i < len; i++)
                putwchar(L' ');
 }