| @@ -123,9 +123,32 @@ int JackMetadata::PropertyInit() | |||||
| #endif | #endif | ||||
| if ((ret = fDBenv->open (fDBenv, dbpath, DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL | DB_THREAD, 0)) != 0) { | if ((ret = fDBenv->open (fDBenv, dbpath, DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL | DB_THREAD, 0)) != 0) { | ||||
| jack_error ("cannot open DB environment: %s", db_strerror (ret)); | |||||
| fDBenv = NULL; | |||||
| return -1; | |||||
| #ifdef WIN32 | |||||
| // new versions of jack2 are built with HAVE_MIXED_SIZE_ADDRESSING, which induces this error, this is expected | |||||
| if (ret == DB_VERSION_MISMATCH) { | |||||
| // cleanup old stuff | |||||
| snprintf (dbpath, sizeof(dbpath), "%s/jack_db/metadata.db", fDBFilesDir); | |||||
| remove (dbpath); | |||||
| snprintf (dbpath, sizeof(dbpath), "%s/jack_db/__db.001", fDBFilesDir); | |||||
| remove (dbpath); | |||||
| snprintf (dbpath, sizeof(dbpath), "%s/jack_db/__db.002", fDBFilesDir); | |||||
| remove (dbpath); | |||||
| snprintf (dbpath, sizeof(dbpath), "%s/jack_db/__db.003", fDBFilesDir); | |||||
| remove (dbpath); | |||||
| // try again fresh | |||||
| ret = fDBenv->open (fDBenv, dbpath, DB_CREATE | DB_INIT_LOCK | DB_INIT_MPOOL | DB_THREAD, 0); | |||||
| } | |||||
| if (ret != 0) | |||||
| #endif | |||||
| { | |||||
| jack_error ("cannot open DB environment: %s", db_strerror (ret)); | |||||
| fDBenv = NULL; | |||||
| return -1; | |||||
| } | |||||
| } | } | ||||
| if ((ret = db_create (&fDB, fDBenv, 0)) != 0) { | if ((ret = db_create (&fDB, fDBenv, 0)) != 0) { | ||||