forked from lix-project/lix
Merge pull request #1417 from corngood/cygwin-fix
Call SetDllDirectory("") after sqlite3 init on cygwin
This commit is contained in:
commit
63d6e0ad3f
|
@ -30,6 +30,10 @@
|
||||||
#include <sys/xattr.h>
|
#include <sys/xattr.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __CYGWIN__
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
#include <sqlite3.h>
|
#include <sqlite3.h>
|
||||||
|
|
||||||
|
|
||||||
|
@ -281,6 +285,16 @@ void LocalStore::openDB(State & state, bool create)
|
||||||
SQLITE_OPEN_READWRITE | (create ? SQLITE_OPEN_CREATE : 0), 0) != SQLITE_OK)
|
SQLITE_OPEN_READWRITE | (create ? SQLITE_OPEN_CREATE : 0), 0) != SQLITE_OK)
|
||||||
throw Error(format("cannot open Nix database ‘%1%’") % dbPath);
|
throw Error(format("cannot open Nix database ‘%1%’") % dbPath);
|
||||||
|
|
||||||
|
#ifdef __CYGWIN__
|
||||||
|
/* The cygwin version of sqlite3 has a patch which calls
|
||||||
|
SetDllDirectory("/usr/bin") on init. It was intended to fix extension
|
||||||
|
loading, which we don't use, and the effect of SetDllDirectory is
|
||||||
|
inherited by child processes, and causes libraries to be loaded from
|
||||||
|
/usr/bin instead of $PATH. This breaks quite a few things (e.g.
|
||||||
|
checkPhase on openssh), so we set it back to default behaviour. */
|
||||||
|
SetDllDirectoryW(L"");
|
||||||
|
#endif
|
||||||
|
|
||||||
if (sqlite3_busy_timeout(db, 60 * 60 * 1000) != SQLITE_OK)
|
if (sqlite3_busy_timeout(db, 60 * 60 * 1000) != SQLITE_OK)
|
||||||
throwSQLiteError(db, "setting timeout");
|
throwSQLiteError(db, "setting timeout");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue