Fossil SCM
Fix invalid directory listings when some siblings directory names are prefixes of others. Ticket [32cfbf0aa4abf964]
Commit
af66e2cf3a6c72001258a532bd63a9b96e2c2cba
Parent
c320b850b92f182…
1 file changed
+5
-1
+5
-1
| --- src/browse.c | ||
| +++ src/browse.c | ||
| @@ -210,11 +210,15 @@ | ||
| 210 | 210 | db_prepare(&ins, |
| 211 | 211 | "INSERT OR IGNORE INTO localfiles VALUES(pathelement(:x,0), :u)" |
| 212 | 212 | ); |
| 213 | 213 | manifest_file_rewind(pM); |
| 214 | 214 | while( (pFile = manifest_file_next(pM,0))!=0 ){ |
| 215 | - if( nD>0 && memcmp(pFile->zName, zD, nD-1)!=0 ) continue; | |
| 215 | + if( nD>0 | |
| 216 | + && (memcmp(pFile->zName, zD, nD-1)!=0 || pFile->zName[nD-1]!='/') | |
| 217 | + ){ | |
| 218 | + continue; | |
| 219 | + } | |
| 216 | 220 | if( pPrev |
| 217 | 221 | && memcmp(&pFile->zName[nD],&pPrev->zName[nD],nPrev)==0 |
| 218 | 222 | && (pFile->zName[nD+nPrev]==0 || pFile->zName[nD+nPrev]=='/') |
| 219 | 223 | ){ |
| 220 | 224 | continue; |
| 221 | 225 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -210,11 +210,15 @@ | |
| 210 | db_prepare(&ins, |
| 211 | "INSERT OR IGNORE INTO localfiles VALUES(pathelement(:x,0), :u)" |
| 212 | ); |
| 213 | manifest_file_rewind(pM); |
| 214 | while( (pFile = manifest_file_next(pM,0))!=0 ){ |
| 215 | if( nD>0 && memcmp(pFile->zName, zD, nD-1)!=0 ) continue; |
| 216 | if( pPrev |
| 217 | && memcmp(&pFile->zName[nD],&pPrev->zName[nD],nPrev)==0 |
| 218 | && (pFile->zName[nD+nPrev]==0 || pFile->zName[nD+nPrev]=='/') |
| 219 | ){ |
| 220 | continue; |
| 221 |
| --- src/browse.c | |
| +++ src/browse.c | |
| @@ -210,11 +210,15 @@ | |
| 210 | db_prepare(&ins, |
| 211 | "INSERT OR IGNORE INTO localfiles VALUES(pathelement(:x,0), :u)" |
| 212 | ); |
| 213 | manifest_file_rewind(pM); |
| 214 | while( (pFile = manifest_file_next(pM,0))!=0 ){ |
| 215 | if( nD>0 |
| 216 | && (memcmp(pFile->zName, zD, nD-1)!=0 || pFile->zName[nD-1]!='/') |
| 217 | ){ |
| 218 | continue; |
| 219 | } |
| 220 | if( pPrev |
| 221 | && memcmp(&pFile->zName[nD],&pPrev->zName[nD],nPrev)==0 |
| 222 | && (pFile->zName[nD+nPrev]==0 || pFile->zName[nD+nPrev]=='/') |
| 223 | ){ |
| 224 | continue; |
| 225 |