diff options
author | Adam Borowski <kilobyte@angband.pl> | 2010-12-26 23:54:15 +0100 |
---|---|---|
committer | Adam Borowski <kilobyte@angband.pl> | 2010-12-26 23:54:15 +0100 |
commit | a68d6d503630dc96783f97d3f33b23c661e32404 (patch) | |
tree | 353da02dc0211629a7a496dc4a5b55111dc33a54 /crawl-ref/source/sqldbm.cc | |
parent | 9b29d91084776d8d2e26774d0fa3abefef864d4b (diff) | |
download | crawl-ref-a68d6d503630dc96783f97d3f33b23c661e32404.tar.gz crawl-ref-a68d6d503630dc96783f97d3f33b23c661e32404.zip |
Fix opening a db with no filename returning success.
This is not an issue currently as we only do this several times with fixed
arguments, but it could possibly cause problems in the future.
Diffstat (limited to 'crawl-ref/source/sqldbm.cc')
-rw-r--r-- | crawl-ref/source/sqldbm.cc | 46 |
1 files changed, 23 insertions, 23 deletions
diff --git a/crawl-ref/source/sqldbm.cc b/crawl-ref/source/sqldbm.cc index 765e3cc7f3..aff6ed8411 100644 --- a/crawl-ref/source/sqldbm.cc +++ b/crawl-ref/source/sqldbm.cc @@ -80,36 +80,36 @@ int SQL_DBM::open(const std::string &s) if (!s.empty()) dbfile = s; - if (!dbfile.empty()) + if (dbfile.empty()) { - if (dbfile.find(".db") != dbfile.length() - 3) - dbfile += ".db"; + error = "No filename!"; + return SQLITE_ERROR; // "... or missing database" + } + + if (dbfile.find(".db") != dbfile.length() - 3) + dbfile += ".db"; #ifdef ANCIENT_SQLITE - if (ec(sqlite3_open( - dbfile.c_str(), &db + if (ec(sqlite3_open( + dbfile.c_str(), &db #else - if (ec(sqlite3_open_v2( - dbfile.c_str(), &db, - readonly? SQLITE_OPEN_READONLY : - (SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE), - NULL + if (ec(sqlite3_open_v2( + dbfile.c_str(), &db, + readonly? SQLITE_OPEN_READONLY : + (SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE), + NULL #endif - )) != SQLITE_OK) - { - const std::string saveerr = error; - const int serrc = errc; - close(); - error = saveerr; - errc = serrc; - return (errc); - } - - init_schema(); + )) != SQLITE_OK) + { + const std::string saveerr = error; + const int serrc = errc; + close(); + error = saveerr; + errc = serrc; + return (errc); } - else - error = "No filename!"; + init_schema(); return (errc); } |