summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYuki Izumi <kivikakk@github.com>2016-11-05 09:04:48 +1100
committerJohn MacFarlane <jgm@berkeley.edu>2016-11-04 23:04:48 +0100
commit64e1394ae76409f02b00c254f119a64a2d1ce11e (patch)
tree4ad30178f0a166666dce869ea5efeb3537cbd61e /src
parent14fe768690b3948c7c1f67f463eb4620fc5746c9 (diff)
Fix for non-matching entities (#161)
* Add test to illustrate issue * Provide some test fixes * Don't neglect CounterClockwiseContourIntegral * Fix ~10% of cases not matching strncmp returns 0 if the first 'len' bytes of cmark_entities[i].entity match s; we check equal length in the first if by checking if cmark_entities[i].entity[len] == 0, but we neglect the case where cmp == 0 && cmark_entities[i].entity[len] != 0. This should be treated as the same as cmp < 0, because strcmp("abc", "abcd") < 0. * Don't depend on py3.3 in tests
Diffstat (limited to 'src')
-rw-r--r--src/entities.inc2
-rw-r--r--src/houdini_html_u.c2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/entities.inc b/src/entities.inc
index ec3d2a9..a7c36e2 100644
--- a/src/entities.inc
+++ b/src/entities.inc
@@ -6,7 +6,7 @@ struct cmark_entity_node {
};
#define CMARK_ENTITY_MIN_LENGTH 2
-#define CMARK_ENTITY_MAX_LENGTH 31
+#define CMARK_ENTITY_MAX_LENGTH 32
#define CMARK_NUM_ENTITIES 2125
static const struct cmark_entity_node cmark_entities[] = {
diff --git a/src/houdini_html_u.c b/src/houdini_html_u.c
index 6e8d620..30d08aa 100644
--- a/src/houdini_html_u.c
+++ b/src/houdini_html_u.c
@@ -16,7 +16,7 @@ static const unsigned char *S_lookup(int i, int low, int hi,
strncmp((const char *)s, (const char *)cmark_entities[i].entity, len);
if (cmp == 0 && cmark_entities[i].entity[len] == 0) {
return (const unsigned char *)cmark_entities[i].bytes;
- } else if (cmp < 0 && i > low) {
+ } else if (cmp <= 0 && i > low) {
j = i - ((i - low) / 2);
if (j == i)
j -= 1;