Fossil SCM
Don't treat IMG SRC and A HREF links beginning // as if they were paths.
Commit
5634879fbe5a9f96739ca16d0d0373a37aced6b3
Parent
168b42eee187841…
1 file changed
+3
-1
+3
-1
| --- src/wikiformat.c | ||
| +++ src/wikiformat.c | ||
| @@ -824,11 +824,12 @@ | ||
| 824 | 824 | blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName); |
| 825 | 825 | for(i=0; i<p->nAttr; i++){ |
| 826 | 826 | blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iACode].zName); |
| 827 | 827 | if( p->aAttr[i].zValue ){ |
| 828 | 828 | const char *zVal = p->aAttr[i].zValue; |
| 829 | - if( p->aAttr[i].iACode==ATTR_SRC && zVal[0]=='/' ){ | |
| 829 | + if( p->aAttr[i].iACode==ATTR_SRC && zVal[0]=='/' | |
| 830 | + && (zVal[0]==0 || zVal[1]!='/') ){ | |
| 830 | 831 | blob_appendf(pOut, "=\"%s%s\"", g.zTop, zVal); |
| 831 | 832 | }else{ |
| 832 | 833 | blob_appendf(pOut, "=\"%s\"", zVal); |
| 833 | 834 | } |
| 834 | 835 | } |
| @@ -1171,10 +1172,11 @@ | ||
| 1171 | 1172 | assert( nClose>=20 ); |
| 1172 | 1173 | if( strncmp(zTarget, "http:", 5)==0 |
| 1173 | 1174 | || strncmp(zTarget, "https:", 6)==0 |
| 1174 | 1175 | || strncmp(zTarget, "ftp:", 4)==0 |
| 1175 | 1176 | || strncmp(zTarget, "mailto:", 7)==0 |
| 1177 | + || strncmp(zTarget, "//", 2)==0 | |
| 1176 | 1178 | ){ |
| 1177 | 1179 | blob_appendf(p->pOut, "<a href=\"%s\">", zTarget); |
| 1178 | 1180 | }else if( zTarget[0]=='/' ){ |
| 1179 | 1181 | blob_appendf(p->pOut, "<a href=\"%s%h\">", g.zTop, zTarget); |
| 1180 | 1182 | }else if( zTarget[0]=='.' |
| 1181 | 1183 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -824,11 +824,12 @@ | |
| 824 | blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName); |
| 825 | for(i=0; i<p->nAttr; i++){ |
| 826 | blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iACode].zName); |
| 827 | if( p->aAttr[i].zValue ){ |
| 828 | const char *zVal = p->aAttr[i].zValue; |
| 829 | if( p->aAttr[i].iACode==ATTR_SRC && zVal[0]=='/' ){ |
| 830 | blob_appendf(pOut, "=\"%s%s\"", g.zTop, zVal); |
| 831 | }else{ |
| 832 | blob_appendf(pOut, "=\"%s\"", zVal); |
| 833 | } |
| 834 | } |
| @@ -1171,10 +1172,11 @@ | |
| 1171 | assert( nClose>=20 ); |
| 1172 | if( strncmp(zTarget, "http:", 5)==0 |
| 1173 | || strncmp(zTarget, "https:", 6)==0 |
| 1174 | || strncmp(zTarget, "ftp:", 4)==0 |
| 1175 | || strncmp(zTarget, "mailto:", 7)==0 |
| 1176 | ){ |
| 1177 | blob_appendf(p->pOut, "<a href=\"%s\">", zTarget); |
| 1178 | }else if( zTarget[0]=='/' ){ |
| 1179 | blob_appendf(p->pOut, "<a href=\"%s%h\">", g.zTop, zTarget); |
| 1180 | }else if( zTarget[0]=='.' |
| 1181 |
| --- src/wikiformat.c | |
| +++ src/wikiformat.c | |
| @@ -824,11 +824,12 @@ | |
| 824 | blob_appendf(pOut, "<%s", aMarkup[p->iCode].zName); |
| 825 | for(i=0; i<p->nAttr; i++){ |
| 826 | blob_appendf(pOut, " %s", aAttribute[p->aAttr[i].iACode].zName); |
| 827 | if( p->aAttr[i].zValue ){ |
| 828 | const char *zVal = p->aAttr[i].zValue; |
| 829 | if( p->aAttr[i].iACode==ATTR_SRC && zVal[0]=='/' |
| 830 | && (zVal[0]==0 || zVal[1]!='/') ){ |
| 831 | blob_appendf(pOut, "=\"%s%s\"", g.zTop, zVal); |
| 832 | }else{ |
| 833 | blob_appendf(pOut, "=\"%s\"", zVal); |
| 834 | } |
| 835 | } |
| @@ -1171,10 +1172,11 @@ | |
| 1172 | assert( nClose>=20 ); |
| 1173 | if( strncmp(zTarget, "http:", 5)==0 |
| 1174 | || strncmp(zTarget, "https:", 6)==0 |
| 1175 | || strncmp(zTarget, "ftp:", 4)==0 |
| 1176 | || strncmp(zTarget, "mailto:", 7)==0 |
| 1177 | || strncmp(zTarget, "//", 2)==0 |
| 1178 | ){ |
| 1179 | blob_appendf(p->pOut, "<a href=\"%s\">", zTarget); |
| 1180 | }else if( zTarget[0]=='/' ){ |
| 1181 | blob_appendf(p->pOut, "<a href=\"%s%h\">", g.zTop, zTarget); |
| 1182 | }else if( zTarget[0]=='.' |
| 1183 |