| | @@ -1363,24 +1363,25 @@ |
| 1363 | 1363 | */ |
| 1364 | 1364 | void db_close_config(){ |
| 1365 | 1365 | int iSlot = db_database_slot("configdb"); |
| 1366 | 1366 | if( iSlot>0 ){ |
| 1367 | 1367 | db_detach("configdb"); |
| 1368 | | - g.zConfigDbName = 0; |
| 1369 | 1368 | }else if( g.dbConfig ){ |
| 1370 | 1369 | sqlite3_wal_checkpoint(g.dbConfig, 0); |
| 1371 | 1370 | sqlite3_close(g.dbConfig); |
| 1372 | 1371 | g.dbConfig = 0; |
| 1373 | | - g.zConfigDbName = 0; |
| 1374 | 1372 | }else if( g.db && 0==iSlot ){ |
| 1375 | 1373 | int rc; |
| 1376 | 1374 | sqlite3_wal_checkpoint(g.db, 0); |
| 1377 | 1375 | rc = sqlite3_close(g.db); |
| 1378 | 1376 | if( g.fSqlTrace ) fossil_trace("-- db_close_config(%d)\n", rc); |
| 1379 | 1377 | g.db = 0; |
| 1380 | | - g.zConfigDbName = 0; |
| 1378 | + }else{ |
| 1379 | + return; |
| 1381 | 1380 | } |
| 1381 | + fossil_free(g.zConfigDbName); |
| 1382 | + g.zConfigDbName = 0; |
| 1382 | 1383 | } |
| 1383 | 1384 | |
| 1384 | 1385 | /* |
| 1385 | 1386 | ** Open the user database in "~/.fossil". Create the database anew if |
| 1386 | 1387 | ** it does not already exist. |
| | @@ -2731,12 +2732,16 @@ |
| 2731 | 2732 | db_multi_exec("DELETE FROM config WHERE name=%Q", zName); |
| 2732 | 2733 | } |
| 2733 | 2734 | } |
| 2734 | 2735 | int db_get_boolean(const char *zName, int dflt){ |
| 2735 | 2736 | char *zVal = db_get(zName, dflt ? "on" : "off"); |
| 2736 | | - if( is_truth(zVal) ) return 1; |
| 2737 | | - if( is_false(zVal) ) return 0; |
| 2737 | + if( is_truth(zVal) ){ |
| 2738 | + dflt = 1; |
| 2739 | + }else if( is_false(zVal) ){ |
| 2740 | + dflt = 0; |
| 2741 | + } |
| 2742 | + fossil_free(zVal); |
| 2738 | 2743 | return dflt; |
| 2739 | 2744 | } |
| 2740 | 2745 | int db_get_versioned_boolean(const char *zName, int dflt){ |
| 2741 | 2746 | char *zVal = db_get_versioned(zName, 0); |
| 2742 | 2747 | if( zVal==0 ) return dflt; |
| 2743 | 2748 | |