Fossil SCM
Calling db_end_transaction() from the early-exit code paths of setup_skin_admin() to avoid "Transaction started at ./src/skins.c:466 never commits" complaints with some types of Admin -> Skins edits.
Commit
1c0b78b4510882a71eb1689a89e642b1c3a1c8eb7b6f85f206e2ac93e4d71cb4
Parent
49e86fe0a88eaf9…
1 file changed
+5
-2
+5
-2
| --- src/skins.c | ||
| +++ src/skins.c | ||
| @@ -480,10 +480,11 @@ | ||
| 480 | 480 | @ <input type="submit" name="del2" value="Confirm - Delete The Skin" /> |
| 481 | 481 | @ <input type="submit" name="cancel" value="Cancel - Do Not Delete" /> |
| 482 | 482 | login_insert_csrf_secret(); |
| 483 | 483 | @ </div></form> |
| 484 | 484 | style_footer(); |
| 485 | + db_end_transaction(1); | |
| 485 | 486 | return; |
| 486 | 487 | } |
| 487 | 488 | if( P("del2")!=0 && (zName = skinVarName(P("sn"), 1))!=0 ){ |
| 488 | 489 | db_multi_exec("DELETE FROM config WHERE name=%Q", zName); |
| 489 | 490 | } |
| @@ -491,12 +492,14 @@ | ||
| 491 | 492 | const char *zDraft = P("name"); |
| 492 | 493 | if( sqlite3_strglob("draft[1-9]",zDraft)==0 ){ |
| 493 | 494 | db_multi_exec("DELETE FROM config WHERE name GLOB '%q-*'", zDraft); |
| 494 | 495 | } |
| 495 | 496 | } |
| 496 | - if( skinRename() ) return; | |
| 497 | - if( skinSave(zCurrent) ) return; | |
| 497 | + if( skinRename() || skinSave(zCurrent) ){ | |
| 498 | + db_end_transaction(0); | |
| 499 | + return; | |
| 500 | + } | |
| 498 | 501 | |
| 499 | 502 | /* The user pressed one of the "Install" buttons. */ |
| 500 | 503 | if( P("load") && (z = P("sn"))!=0 && z[0] ){ |
| 501 | 504 | int seen = 0; |
| 502 | 505 | |
| 503 | 506 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -480,10 +480,11 @@ | |
| 480 | @ <input type="submit" name="del2" value="Confirm - Delete The Skin" /> |
| 481 | @ <input type="submit" name="cancel" value="Cancel - Do Not Delete" /> |
| 482 | login_insert_csrf_secret(); |
| 483 | @ </div></form> |
| 484 | style_footer(); |
| 485 | return; |
| 486 | } |
| 487 | if( P("del2")!=0 && (zName = skinVarName(P("sn"), 1))!=0 ){ |
| 488 | db_multi_exec("DELETE FROM config WHERE name=%Q", zName); |
| 489 | } |
| @@ -491,12 +492,14 @@ | |
| 491 | const char *zDraft = P("name"); |
| 492 | if( sqlite3_strglob("draft[1-9]",zDraft)==0 ){ |
| 493 | db_multi_exec("DELETE FROM config WHERE name GLOB '%q-*'", zDraft); |
| 494 | } |
| 495 | } |
| 496 | if( skinRename() ) return; |
| 497 | if( skinSave(zCurrent) ) return; |
| 498 | |
| 499 | /* The user pressed one of the "Install" buttons. */ |
| 500 | if( P("load") && (z = P("sn"))!=0 && z[0] ){ |
| 501 | int seen = 0; |
| 502 | |
| 503 |
| --- src/skins.c | |
| +++ src/skins.c | |
| @@ -480,10 +480,11 @@ | |
| 480 | @ <input type="submit" name="del2" value="Confirm - Delete The Skin" /> |
| 481 | @ <input type="submit" name="cancel" value="Cancel - Do Not Delete" /> |
| 482 | login_insert_csrf_secret(); |
| 483 | @ </div></form> |
| 484 | style_footer(); |
| 485 | db_end_transaction(1); |
| 486 | return; |
| 487 | } |
| 488 | if( P("del2")!=0 && (zName = skinVarName(P("sn"), 1))!=0 ){ |
| 489 | db_multi_exec("DELETE FROM config WHERE name=%Q", zName); |
| 490 | } |
| @@ -491,12 +492,14 @@ | |
| 492 | const char *zDraft = P("name"); |
| 493 | if( sqlite3_strglob("draft[1-9]",zDraft)==0 ){ |
| 494 | db_multi_exec("DELETE FROM config WHERE name GLOB '%q-*'", zDraft); |
| 495 | } |
| 496 | } |
| 497 | if( skinRename() || skinSave(zCurrent) ){ |
| 498 | db_end_transaction(0); |
| 499 | return; |
| 500 | } |
| 501 | |
| 502 | /* The user pressed one of the "Install" buttons. */ |
| 503 | if( P("load") && (z = P("sn"))!=0 && z[0] ){ |
| 504 | int seen = 0; |
| 505 | |
| 506 |