These numbers were well exceeding 2^32...
authorJacobF <queatz@gmail.com>
Sun, 4 Sep 2011 21:01:28 +0000 (17:01 -0400)
committerJacobF <queatz@gmail.com>
Sun, 4 Sep 2011 21:01:28 +0000 (17:01 -0400)
src/map.cpp
src/map.h

index 41c4e17d2cbb5e9bea1bb772da0fe4a3deb65bf7..46ee5b53ffe830fe8a50d50808a908b282112a9e 100644 (file)
@@ -2849,8 +2849,9 @@ bool ServerMap::loadFromFolders() {
        return false;
 }
 
-int ServerMap::getBlockAsInteger(const v3s16 pos) {
-       return (pos.Z+2048)*16777216 + (pos.Y+2048)*4096 + pos.X;
+sqlite3_int64 ServerMap::getBlockAsInteger(const v3s16 pos) {
+       return (sqlite3_int64)pos.Z*16777216 +
+               (sqlite3_int64)pos.Y*4096 + (sqlite3_int64)pos.X;
 }
 
 void ServerMap::createDirs(std::string path)
@@ -3318,7 +3319,7 @@ void ServerMap::saveBlock(MapBlock *block)
        std::string tmp = o.str();
        const char *bytes = tmp.c_str();
        
-       if(sqlite3_bind_int(m_database_write, 1, getBlockAsInteger(p3d)) != SQLITE_OK)
+       if(sqlite3_bind_int64(m_database_write, 1, getBlockAsInteger(p3d)) != SQLITE_OK)
                dstream<<"WARNING: Block position failed to bind: "<<sqlite3_errmsg(m_database)<<std::endl;
        if(sqlite3_bind_blob(m_database_write, 2, (void *)bytes, o.tellp(), NULL) != SQLITE_OK) // TODO this mught not be the right length
                dstream<<"WARNING: Block data failed to bind: "<<sqlite3_errmsg(m_database)<<std::endl;
@@ -3484,7 +3485,7 @@ MapBlock* ServerMap::loadBlock(v3s16 blockpos)
        if(!loadFromFolders()) {
                verifyDatabase();
                
-               if(sqlite3_bind_int(m_database_read, 1, getBlockAsInteger(blockpos)) != SQLITE_OK)
+               if(sqlite3_bind_int64(m_database_read, 1, getBlockAsInteger(blockpos)) != SQLITE_OK)
                        dstream<<"WARNING: Could not bind block position for load: "
                                <<sqlite3_errmsg(m_database)<<std::endl;
                if(sqlite3_step(m_database_read) == SQLITE_ROW) {
index 411a7ae514d9f11c36fee3815a3c3b4744d63c61..e0b67eb6e9aa4baa4dfaac901edb0a0fd0bb09eb 100644 (file)
--- a/src/map.h
+++ b/src/map.h
@@ -378,7 +378,7 @@ public:
        // Verify we can read/write to the database
        void verifyDatabase();
        // Get an integer suitable for a block
-       static int getBlockAsInteger(const v3s16 pos);
+       static sqlite3_int64 getBlockAsInteger(const v3s16 pos);
 
        // Returns true if the database file does not exist
        bool loadFromFolders();