From 6db3cb40add3800246bee8cd051baf4243e8ae44 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 28 Dec 2015 10:50:20 -0800 Subject: Another small optimization in _scan_at. Check for offset greater than string length. --- src/scanners.c | 5 ++--- src/scanners.re | 2 +- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/src/scanners.c b/src/scanners.c index c0df18b..ae4125f 100644 --- a/src/scanners.c +++ b/src/scanners.c @@ -7,10 +7,9 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, bufsize_t offset) { bufsize_t res; unsigned char *ptr = (unsigned char *)c->data; - unsigned char zero = '\0'; - if (ptr == NULL) { - res = scanner(&zero); + if (ptr == NULL || offset > c->len) { + return 0; } else { unsigned char lim = ptr[c->len]; diff --git a/src/scanners.re b/src/scanners.re index befe7d0..8176590 100644 --- a/src/scanners.re +++ b/src/scanners.re @@ -7,7 +7,7 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, bufsize_t res; unsigned char *ptr = (unsigned char *)c->data; - if (ptr == NULL) { + if (ptr == NULL || offset > c->len) { return 0; } else { unsigned char lim = ptr[c->len]; -- cgit v1.2.3