bdk: ff: check for cltbl malloc success
This commit is contained in:
@@ -4698,13 +4698,20 @@ FRESULT f_lseek (
|
|||||||
|
|
||||||
DWORD *f_expand_cltbl (
|
DWORD *f_expand_cltbl (
|
||||||
FIL* fp, /* Pointer to the file object */
|
FIL* fp, /* Pointer to the file object */
|
||||||
UINT tblsz, /* Size of table */
|
UINT tblsz, /* Size of table (2 DWORDs + 2 DWORDs per fragment) */
|
||||||
FSIZE_t ofs /* File pointer from top of file */
|
FSIZE_t ofs /* File pointer from top of file */
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Cluster table structure:
|
||||||
|
* Size (DWORD)
|
||||||
|
* Padding (DWORD)
|
||||||
|
* (Cluster Offset (DWORD) + Sequential clusters (DWORD)) * Fragments
|
||||||
|
*/
|
||||||
if (fp->flag & FA_WRITE) f_lseek(fp, ofs); /* Expand file if write is enabled */
|
if (fp->flag & FA_WRITE) f_lseek(fp, ofs); /* Expand file if write is enabled */
|
||||||
if (!fp->cltbl) { /* Allocate memory for cluster link table */
|
if (!fp->cltbl) { /* Allocate memory for cluster link table */
|
||||||
fp->cltbl = (DWORD *)ff_memalloc(tblsz);
|
fp->cltbl = (DWORD *)ff_memalloc(tblsz);
|
||||||
|
if (!fp->cltbl) return (void *)0;
|
||||||
fp->cltbl[0] = tblsz;
|
fp->cltbl[0] = tblsz;
|
||||||
}
|
}
|
||||||
if (f_lseek(fp, CREATE_LINKMAP)) { /* Create cluster link table */
|
if (f_lseek(fp, CREATE_LINKMAP)) { /* Create cluster link table */
|
||||||
|
|||||||
Reference in New Issue
Block a user