Skip to content

Commit 1b994d5

Browse files
committed
Fix wrong size reported for cards above 16GB
Fixes: espressif#803
1 parent 45d5d9b commit 1b994d5

File tree

2 files changed

+4
-4
lines changed

2 files changed

+4
-4
lines changed

libraries/SD/src/SD.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ uint64_t SDFS::totalBytes()
8080
FATFS* fsinfo;
8181
DWORD fre_clust;
8282
if(f_getfree("0:",&fre_clust,&fsinfo)!= 0) return 0;
83-
uint64_t size = (fsinfo->csize)*(fsinfo->n_fatent - 2)
83+
uint64_t size = ((uint64_t)(fsinfo->csize))*(fsinfo->n_fatent - 2)
8484
#if _MAX_SS != 512
8585
*(fsinfo->ssize);
8686
#else
@@ -94,7 +94,7 @@ uint64_t SDFS::usedBytes()
9494
FATFS* fsinfo;
9595
DWORD fre_clust;
9696
if(f_getfree("0:",&fre_clust,&fsinfo)!= 0) return 0;
97-
uint64_t size = (fsinfo->csize)*((fsinfo->n_fatent - 2) - (fsinfo->free_clst))
97+
uint64_t size = ((uint64_t)(fsinfo->csize))*((fsinfo->n_fatent - 2) - (fsinfo->free_clst))
9898
#if _MAX_SS != 512
9999
*(fsinfo->ssize);
100100
#else

libraries/SD_MMC/src/SD_MMC.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ uint64_t SDMMCFS::totalBytes()
104104
FATFS* fsinfo;
105105
DWORD fre_clust;
106106
if(f_getfree("0:",&fre_clust,&fsinfo)!= 0) return 0;
107-
uint64_t size = (fsinfo->csize)*(fsinfo->n_fatent - 2)
107+
uint64_t size = ((uint64_t)(fsinfo->csize))*(fsinfo->n_fatent - 2)
108108
#if _MAX_SS != 512
109109
*(fsinfo->ssize);
110110
#else
@@ -118,7 +118,7 @@ uint64_t SDMMCFS::usedBytes()
118118
FATFS* fsinfo;
119119
DWORD fre_clust;
120120
if(f_getfree("0:",&fre_clust,&fsinfo)!= 0) return 0;
121-
uint64_t size = (fsinfo->csize)*((fsinfo->n_fatent - 2) - (fsinfo->free_clst))
121+
uint64_t size = ((uint64_t)(fsinfo->csize))*((fsinfo->n_fatent - 2) - (fsinfo->free_clst))
122122
#if _MAX_SS != 512
123123
*(fsinfo->ssize);
124124
#else

0 commit comments

Comments
 (0)