Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Overview
| Comment: | Resolve the bug revealed in [forum:16880a28aad1a868 | forum post 16880a28aad1a868] in which the db_open() appendvfs check can misinteract with g.nameOfExe. This is in a branch until a Windows user can confirm that the g.nameOfExe change in main.c behaves as desired on Windows. This was a collaborative bug fix via /chat, not my own. Edit: test success on Windows reported by Martin G. |
|---|---|
| Downloads: | Tarball | ZIP archive |
| Timelines: | family | ancestors | descendants | both | nameofexe-appendvfs-check |
| Files: | files | file ages | folders |
| SHA3-256: |
ec02acfd095752419ce85bc2482dfdb6 |
| User & Date: | stephan 2022-02-28 21:30:48.009 |
| Original Comment: | Resolve the bug revealed in [forum:16880a28aad1a868 | forum post 16880a28aad1a868] in which the db_open() appendvfs check can misinteract with g.nameOfExe. This is in a branch until a Windows user can confirm that the g.nameOfExe change in main.c behaves as desired on Windows. This was a collaborative bug fix via /chat, not my own. |
Context
|
2022-03-01
| ||
| 16:21 | Fix an unused var warning in windows Closed-Leaf check-in: 169a3dabcf user: mgagnon tags: nameofexe-appendvfs-check | |
|
2022-02-28
| ||
| 21:30 | Resolve the bug revealed in [forum:16880a28aad1a868 | forum post 16880a28aad1a868] in which the db_open() appendvfs check can misinteract with g.nameOfExe. This is in a branch until a Windows user can confirm that the g.nameOfExe change in main.c behaves as desired on Windows. This was a collaborative bug fix via /chat, not my own. Edit: test success on Windows reported by Martin G. check-in: ec02acfd09 user: stephan tags: nameofexe-appendvfs-check | |
| 20:49 | Since checkin [d8c32ebdff], file_fullexename() function is supported windows, remove comment saying otherwize. (no code change) check-in: 491b986d0d user: mgagnon tags: trunk | |
Changes
Changes to src/db.c.
| ︙ | ︙ | |||
1633 1634 1635 1636 1637 1638 1639 1640 1641 |
/*
** Open a database file. Return a pointer to the new database
** connection. An error results in process abort.
*/
LOCAL sqlite3 *db_open(const char *zDbName){
int rc;
sqlite3 *db;
if( g.fSqlTrace ) fossil_trace("-- sqlite3_open: [%s]\n", zDbName);
| > > > > > > | > | 1633 1634 1635 1636 1637 1638 1639 1640 1641 1642 1643 1644 1645 1646 1647 1648 1649 1650 1651 1652 1653 1654 1655 1656 1657 1658 1659 1660 1661 1662 |
/*
** Open a database file. Return a pointer to the new database
** connection. An error results in process abort.
*/
LOCAL sqlite3 *db_open(const char *zDbName){
int rc;
sqlite3 *db;
Blob bNameCheck = BLOB_INITIALIZER;
if( g.fSqlTrace ) fossil_trace("-- sqlite3_open: [%s]\n", zDbName);
file_canonical_name(zDbName, &bNameCheck, 0)
/* For purposes of the apndvfs check, g.nameOfExe and zDbName must
** both be canonicalized, else chances are very good that they
** will not match even if they're the same file. Details:
** https://fossil-scm.org/forum/forumpost/16880a28aad1a868 */;
if( strcmp(blob_str(&bNameCheck), g.nameOfExe)==0 ){
extern int sqlite3_appendvfs_init(
sqlite3 *, char **, const sqlite3_api_routines *
);
sqlite3_appendvfs_init(0,0,0);
g.zVfsName = "apndvfs";
}
blob_zero(&bNameCheck);
rc = sqlite3_open_v2(
zDbName, &db,
SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
g.zVfsName
);
if( rc!=SQLITE_OK ){
db_err("[%s]: %s", zDbName, sqlite3_errmsg(db));
|
| ︙ | ︙ |
Changes to src/main.c.
| ︙ | ︙ | |||
430 431 432 433 434 435 436 | g.argv = argv; sqlite3_initialize(); #if defined(_WIN32) && defined(BROKEN_MINGW_CMDLINE) for(i=0; i<g.argc; i++) g.argv[i] = fossil_mbcs_to_utf8(g.argv[i]); #else for(i=0; i<g.argc; i++) g.argv[i] = fossil_path_to_utf8(g.argv[i]); #endif | < < < < | < | 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 |
g.argv = argv;
sqlite3_initialize();
#if defined(_WIN32) && defined(BROKEN_MINGW_CMDLINE)
for(i=0; i<g.argc; i++) g.argv[i] = fossil_mbcs_to_utf8(g.argv[i]);
#else
for(i=0; i<g.argc; i++) g.argv[i] = fossil_path_to_utf8(g.argv[i]);
#endif
g.nameOfExe = file_fullexename(g.argv[0]);
for(i=1; i<g.argc-1; i++){
z = g.argv[i];
if( z[0]!='-' ) continue;
z++;
if( z[0]=='-' ) z++;
if( z[0]==0 ) return; /* Stop searching at "--" */
if( fossil_strcmp(z, "args")==0 ) break;
|
| ︙ | ︙ |