Fossil SCM

Fix invalid directory listings when some siblings directory names are prefixes of others. Ticket [32cfbf0aa4abf964]

drh 2011-03-07 18:49 trunk
Commit af66e2cf3a6c72001258a532bd63a9b96e2c2cba
1 file changed +5 -1
+5 -1
--- src/browse.c
+++ src/browse.c
@@ -210,11 +210,15 @@
210210
db_prepare(&ins,
211211
"INSERT OR IGNORE INTO localfiles VALUES(pathelement(:x,0), :u)"
212212
);
213213
manifest_file_rewind(pM);
214214
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
+ }
216220
if( pPrev
217221
&& memcmp(&pFile->zName[nD],&pPrev->zName[nD],nPrev)==0
218222
&& (pFile->zName[nD+nPrev]==0 || pFile->zName[nD+nPrev]=='/')
219223
){
220224
continue;
221225
--- 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

Keyboard Shortcuts

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