Skip to content

Commit 6d4f684

Browse files
committed
Fix bug for the huge(>2GB) database
1 parent f1c65eb commit 6d4f684

File tree

3 files changed

+7
-6
lines changed

3 files changed

+7
-6
lines changed

repair/sqliterk_os.c

+2-2
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ int sqliterkOSRead(sqliterk_file *file,
131131
return SQLITERK_OK;
132132
}
133133

134-
int sqliterkOSFileSize(sqliterk_file *file, int *filesize)
134+
int sqliterkOSFileSize(sqliterk_file *file, size_t *filesize)
135135
{
136136
if (!file || file->fd < 0) {
137137
return SQLITERK_MISUSE;
@@ -141,7 +141,7 @@ int sqliterkOSFileSize(sqliterk_file *file, int *filesize)
141141
file->error = errno;
142142
return SQLITERK_IOERR;
143143
}
144-
*filesize = (int) statbuf.st_size;
144+
*filesize = (size_t) statbuf.st_size;
145145
return SQLITERK_OK;
146146
}
147147

repair/sqliterk_os.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ int sqliterkOSRead(sqliterk_file *file,
5555
off_t offset,
5656
unsigned char *data,
5757
size_t *size);
58-
int sqliterkOSFileSize(sqliterk_file *file, int *filesize);
58+
int sqliterkOSFileSize(sqliterk_file *file, size_t *filesize);
5959
const char *sqliterkOSGetFilePath(sqliterk_file *file);
6060

6161
#endif /* sqliterk_os_h */

repair/sqliterk_pager.c

+4-3
Original file line numberDiff line numberDiff line change
@@ -247,15 +247,16 @@ static int sqliterkPagerParseHeader(sqliterk_pager *pager, int forcePageSize)
247247
}
248248

249249
// Assign page count
250-
int filesize;
250+
size_t filesize;
251251
rc = sqliterkOSFileSize(pager->file, &filesize);
252252
if (rc != SQLITERK_OK) {
253253
sqliterkOSError(rc, "Failed to get size of file '%s': %s",
254254
sqliterkOSGetFilePath(pager->file), strerror(errno));
255255
goto sqliterkPagerParseHeader_End;
256256
}
257257

258-
pager->pagecount = (filesize + pager->pagesize - 1) / pager->pagesize;
258+
pager->pagecount =
259+
(int) ((filesize + pager->pagesize - 1) / pager->pagesize);
259260
if (pager->pagecount < 1) {
260261
rc = SQLITERK_DAMAGED;
261262
sqliterkOSError(rc, "File truncated.");
@@ -602,4 +603,4 @@ unsigned int sqliterkPagerGetIntegrity(sqliterk_pager *pager)
602603
return 0;
603604
}
604605
return pager->integrity;
605-
}
606+
}

0 commit comments

Comments
 (0)