Browse Source

text: fix is_whitespace() assertion when invalid chars are included

rdb 7 years ago
parent
commit
5c90f64182
2 changed files with 11 additions and 3 deletions
  1. 4 3
      panda/src/text/textAssembler.cxx
  2. 7 0
      tests/text/test_text_assemble.py

+ 4 - 3
panda/src/text/textAssembler.cxx

@@ -1626,10 +1626,11 @@ assemble_row(TextAssembler::TextRow &row,
       }
       }
 
 
       if (first_glyph != (TextGlyph *)NULL) {
       if (first_glyph != (TextGlyph *)NULL) {
-        assert(!first_glyph->is_whitespace());
         advance = first_glyph->get_advance() * advance_scale;
         advance = first_glyph->get_advance() * advance_scale;
-        swap(placement._glyph, first_glyph);
-        placed_glyphs.push_back(placement);
+        if (!first_glyph->is_whitespace()) {
+          swap(placement._glyph, first_glyph);
+          placed_glyphs.push_back(placement);
+        }
       }
       }
 
 
       // Check if there is a second glyph to create a hacky ligature or some
       // Check if there is a second glyph to create a hacky ligature or some

+ 7 - 0
tests/text/test_text_assemble.py

@@ -0,0 +1,7 @@
+from panda3d import core
+
+def test_text_assemble_null():
+    # Tests that no is_whitespace() assert occurs
+    assembler = core.TextAssembler(core.TextEncoder())
+    assembler.set_wtext(u"\0test")
+    assembler.assemble_text()