Fossil SCM
Handle more corner cases when locating the title for wiki pages.
Commit
afc25dd4bc495ac5164220345a8812b62eb40530
Parent
916e5a43db5d0b6…
1 file changed
+11
-3
+11
-3
| --- src/wikiformat.c | ||
| +++ src/wikiformat.c | ||
| @@ -1739,14 +1739,22 @@ | ||
| 1739 | 1739 | z = blob_str(pIn); |
| 1740 | 1740 | for(i=0; fossil_isspace(z[i]); i++){} |
| 1741 | 1741 | if( z[i]!='<' ) return 0; |
| 1742 | 1742 | i++; |
| 1743 | 1743 | if( strncmp(&z[i],"title>", 6)!=0 ) return 0; |
| 1744 | - iStart = i+6; | |
| 1744 | + for(iStart=i+6; fossil_isspace(z[iStart]); iStart++){} | |
| 1745 | 1745 | for(i=iStart; z[i] && (z[i]!='<' || strncmp(&z[i],"</title>",8)!=0); i++){} |
| 1746 | - if( z[i]!='<' ) return 0; | |
| 1747 | - blob_init(pTitle, &z[iStart], i-iStart); | |
| 1746 | + if( strncmp(&z[i],"</title>",8)!=0 ){ | |
| 1747 | + blob_init(pTitle, 0, 0); | |
| 1748 | + blob_init(pTail, &z[iStart], -1); | |
| 1749 | + return 1; | |
| 1750 | + } | |
| 1751 | + if( i-iStart>0 ){ | |
| 1752 | + blob_init(pTitle, &z[iStart], i-iStart); | |
| 1753 | + }else{ | |
| 1754 | + blob_init(pTitle, 0, 0); | |
| 1755 | + } | |
| 1748 | 1756 | blob_init(pTail, &z[i+8], -1); |
| 1749 | 1757 | return 1; |
| 1750 | 1758 | } |
| 1751 | 1759 | |
| 1752 | 1760 | /* |
| 1753 | 1761 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -1739,14 +1739,22 @@ | |
| 1739 | z = blob_str(pIn); |
| 1740 | for(i=0; fossil_isspace(z[i]); i++){} |
| 1741 | if( z[i]!='<' ) return 0; |
| 1742 | i++; |
| 1743 | if( strncmp(&z[i],"title>", 6)!=0 ) return 0; |
| 1744 | iStart = i+6; |
| 1745 | for(i=iStart; z[i] && (z[i]!='<' || strncmp(&z[i],"</title>",8)!=0); i++){} |
| 1746 | if( z[i]!='<' ) return 0; |
| 1747 | blob_init(pTitle, &z[iStart], i-iStart); |
| 1748 | blob_init(pTail, &z[i+8], -1); |
| 1749 | return 1; |
| 1750 | } |
| 1751 | |
| 1752 | /* |
| 1753 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -1739,14 +1739,22 @@ | |
| 1739 | z = blob_str(pIn); |
| 1740 | for(i=0; fossil_isspace(z[i]); i++){} |
| 1741 | if( z[i]!='<' ) return 0; |
| 1742 | i++; |
| 1743 | if( strncmp(&z[i],"title>", 6)!=0 ) return 0; |
| 1744 | for(iStart=i+6; fossil_isspace(z[iStart]); iStart++){} |
| 1745 | for(i=iStart; z[i] && (z[i]!='<' || strncmp(&z[i],"</title>",8)!=0); i++){} |
| 1746 | if( strncmp(&z[i],"</title>",8)!=0 ){ |
| 1747 | blob_init(pTitle, 0, 0); |
| 1748 | blob_init(pTail, &z[iStart], -1); |
| 1749 | return 1; |
| 1750 | } |
| 1751 | if( i-iStart>0 ){ |
| 1752 | blob_init(pTitle, &z[iStart], i-iStart); |
| 1753 | }else{ |
| 1754 | blob_init(pTitle, 0, 0); |
| 1755 | } |
| 1756 | blob_init(pTail, &z[i+8], -1); |
| 1757 | return 1; |
| 1758 | } |
| 1759 | |
| 1760 | /* |
| 1761 |