Fossil SCM

Fix a bug in the skin edit pages that can result in an infinite loop.

drh 2018-11-13 16:14 trunk
Commit 995e184cc14fa435f125237ff977f54c5ec740823b0875a91375d494ca259d90
1 file changed +4 -2
+4 -2
--- src/skins.c
+++ src/skins.c
@@ -676,15 +676,17 @@
676676
if( fossil_strcmp(zLabel, "current")==0 ){
677677
zResult = db_get(zFile, "");
678678
}else if( sqlite3_strglob("draft[1-9]", zLabel)==0 ){
679679
zResult = db_get_mprintf("", "%s-%s", zLabel, zFile);
680680
}else{
681
- while( 1 ){
681
+ int i;
682
+ for(i=0; i<2; i++){
682683
char *zKey = mprintf("skins/%s/%s.txt", zLabel, zFile);
683684
zResult = builtin_text(zKey);
684685
fossil_free(zKey);
685
- if( zResult!=0 || fossil_strcmp(zLabel,"default")==0 ) break;
686
+ if( zResult!=0 ) break;
687
+ zLabel = "default";
686688
}
687689
}
688690
return zResult;
689691
}
690692
691693
--- src/skins.c
+++ src/skins.c
@@ -676,15 +676,17 @@
676 if( fossil_strcmp(zLabel, "current")==0 ){
677 zResult = db_get(zFile, "");
678 }else if( sqlite3_strglob("draft[1-9]", zLabel)==0 ){
679 zResult = db_get_mprintf("", "%s-%s", zLabel, zFile);
680 }else{
681 while( 1 ){
 
682 char *zKey = mprintf("skins/%s/%s.txt", zLabel, zFile);
683 zResult = builtin_text(zKey);
684 fossil_free(zKey);
685 if( zResult!=0 || fossil_strcmp(zLabel,"default")==0 ) break;
 
686 }
687 }
688 return zResult;
689 }
690
691
--- src/skins.c
+++ src/skins.c
@@ -676,15 +676,17 @@
676 if( fossil_strcmp(zLabel, "current")==0 ){
677 zResult = db_get(zFile, "");
678 }else if( sqlite3_strglob("draft[1-9]", zLabel)==0 ){
679 zResult = db_get_mprintf("", "%s-%s", zLabel, zFile);
680 }else{
681 int i;
682 for(i=0; i<2; i++){
683 char *zKey = mprintf("skins/%s/%s.txt", zLabel, zFile);
684 zResult = builtin_text(zKey);
685 fossil_free(zKey);
686 if( zResult!=0 ) break;
687 zLabel = "default";
688 }
689 }
690 return zResult;
691 }
692
693

Keyboard Shortcuts

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