summaryrefslogtreecommitdiffstats
path: root/crawl-ref/source/sqldbm.cc
diff options
context:
space:
mode:
authorAdam Borowski <kilobyte@angband.pl>2010-12-26 23:54:15 +0100
committerAdam Borowski <kilobyte@angband.pl>2010-12-26 23:54:15 +0100
commita68d6d503630dc96783f97d3f33b23c661e32404 (patch)
tree353da02dc0211629a7a496dc4a5b55111dc33a54 /crawl-ref/source/sqldbm.cc
parent9b29d91084776d8d2e26774d0fa3abefef864d4b (diff)
downloadcrawl-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.cc46
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);
}