Commit 0d1a41a4d25d57e41b19f8c6abbabbf4d40d09ae

Martin Mitas 2018-03-28T08:21:21

md_build_attr_append_substr: Fix +1 allocation error. Fixes #33.

diff --git a/md4c/md4c.c b/md4c/md4c.c
index 52efc7a..0f3522e 100644
--- a/md4c/md4c.c
+++ b/md4c/md4c.c
@@ -1384,13 +1384,14 @@ md_build_attr_append_substr(MD_CTX* ctx, MD_ATTRIBUTE_BUILD* build,
         build->substr_alloc = (build->substr_alloc == 0 ? 8 : build->substr_alloc * 2);
 
         new_substr_types = (MD_TEXTTYPE*) realloc(build->substr_types,
-                                    (build->substr_alloc+1) * sizeof(MD_TEXTTYPE));
+                                    build->substr_alloc * sizeof(MD_TEXTTYPE));
         if(new_substr_types == NULL) {
             MD_LOG("realloc() failed.");
             return -1;
         }
+        /* Note +1 to reserve space for final offset (== raw_size). */
         new_substr_offsets = (OFF*) realloc(build->substr_offsets,
-                                    build->substr_alloc * sizeof(OFF));
+                                    (build->substr_alloc+1) * sizeof(OFF));
         if(new_substr_offsets == NULL) {
             MD_LOG("realloc() failed.");
             free(new_substr_types);
diff --git a/test/coverage.txt b/test/coverage.txt
index 7a0ec5a..528069b 100644
--- a/test/coverage.txt
+++ b/test/coverage.txt
@@ -118,6 +118,16 @@ a*b**c*
 ````````````````````````````````
 
 
+### [Issue 33](https://github.com/mity/md4c/issues/33)
+```````````````````````````````` example
+```&&&&&&&&
+.
+<pre><code class="language-&amp;&amp;&amp;&amp;&amp;&amp;&amp;&amp;"></code></pre>
+
+````````````````````````````````
+
+
+
 ## Code coverage
 
 ### `md_is_unicode_whitespace__()`