diff options
author | John MacFarlane <[email protected]> | 2015-09-16 09:03:40 -0700 |
---|---|---|
committer | John MacFarlane <[email protected]> | 2015-09-16 09:03:40 -0700 |
commit | 3e0fa0695e26d1d77af8ebc8d70ed8817303a0b3 (patch) | |
tree | 7d46df32088ee7a0386ae28a46b4b76fb7ad2629 /src/scanners.re | |
parent | 1f4632b8e761da5aaeebcefb2e43332ad267dba8 (diff) |
Check for NULL pointer in _scan_at.
Closes #81.
Diffstat (limited to 'src/scanners.re')
-rw-r--r-- | src/scanners.re | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/src/scanners.re b/src/scanners.re index 0037bc4..75417a1 100644 --- a/src/scanners.re +++ b/src/scanners.re @@ -6,11 +6,17 @@ bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c, { bufsize_t res; unsigned char *ptr = (unsigned char *)c->data; - unsigned char lim = ptr[c->len]; + unsigned char zero = '\0'; - ptr[c->len] = '\0'; - res = scanner(ptr + offset); - ptr[c->len] = lim; + if (ptr == NULL) { + res = scanner(&zero); + } else { + unsigned char lim = ptr[c->len]; + + ptr[c->len] = '\0'; + res = scanner(ptr + offset); + ptr[c->len] = lim; + } return res; } |