Fossil SCM

Correctly handle block HTML in markdown if the end tag occurs at the very end of the input without even a new-line.

drh 2021-08-12 14:38 trunk
Commit a06f3379f0e324038e28a94d9f6356c4c41bfd284b369e7b800fc0a2819b2655
1 file changed +2 -2
+2 -2
--- src/markdown.c
+++ src/markdown.c
@@ -1697,11 +1697,11 @@
16971697
size_t i, w;
16981698
16991699
/* assuming data[0]=='<' && data[1]=='/' already tested */
17001700
17011701
/* checking tag is a match */
1702
- if( (tag->size+3)>=size
1702
+ if( (tag->size+3)>size
17031703
|| fossil_strnicmp(data+2, tag->text, tag->size)
17041704
|| data[tag->size+2]!='>'
17051705
){
17061706
return 0;
17071707
}
@@ -1790,11 +1790,11 @@
17901790
i = 1;
17911791
found = 0;
17921792
while( i<size ){
17931793
i++;
17941794
while( i<size && !(data[i-1]=='<' && data[i]=='/') ){ i++; }
1795
- if( (i+2+curtag->size)>=size ) break;
1795
+ if( (i+2+curtag->size)>size ) break;
17961796
j = htmlblock_end(curtag, data+i-1, size-i+1);
17971797
if (j) {
17981798
i += j-1;
17991799
found = 1;
18001800
break;
18011801
--- src/markdown.c
+++ src/markdown.c
@@ -1697,11 +1697,11 @@
1697 size_t i, w;
1698
1699 /* assuming data[0]=='<' && data[1]=='/' already tested */
1700
1701 /* checking tag is a match */
1702 if( (tag->size+3)>=size
1703 || fossil_strnicmp(data+2, tag->text, tag->size)
1704 || data[tag->size+2]!='>'
1705 ){
1706 return 0;
1707 }
@@ -1790,11 +1790,11 @@
1790 i = 1;
1791 found = 0;
1792 while( i<size ){
1793 i++;
1794 while( i<size && !(data[i-1]=='<' && data[i]=='/') ){ i++; }
1795 if( (i+2+curtag->size)>=size ) break;
1796 j = htmlblock_end(curtag, data+i-1, size-i+1);
1797 if (j) {
1798 i += j-1;
1799 found = 1;
1800 break;
1801
--- src/markdown.c
+++ src/markdown.c
@@ -1697,11 +1697,11 @@
1697 size_t i, w;
1698
1699 /* assuming data[0]=='<' && data[1]=='/' already tested */
1700
1701 /* checking tag is a match */
1702 if( (tag->size+3)>size
1703 || fossil_strnicmp(data+2, tag->text, tag->size)
1704 || data[tag->size+2]!='>'
1705 ){
1706 return 0;
1707 }
@@ -1790,11 +1790,11 @@
1790 i = 1;
1791 found = 0;
1792 while( i<size ){
1793 i++;
1794 while( i<size && !(data[i-1]=='<' && data[i]=='/') ){ i++; }
1795 if( (i+2+curtag->size)>size ) break;
1796 j = htmlblock_end(curtag, data+i-1, size-i+1);
1797 if (j) {
1798 i += j-1;
1799 found = 1;
1800 break;
1801

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button