From 64e1394ae76409f02b00c254f119a64a2d1ce11e Mon Sep 17 00:00:00 2001 From: Yuki Izumi Date: Sat, 5 Nov 2016 09:04:48 +1100 Subject: 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 --- src/houdini_html_u.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/houdini_html_u.c') 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; -- cgit v1.2.3