Eliminate heap allocation in FileSystem::format

This commit is contained in:
2016-12-14 23:37:10 -06:00
parent 747f68bb0e
commit 7d1dd8df43
+2 -4
View File
@@ -205,17 +205,15 @@ int FileSystemTemplate<FileStore, FS_TYPE>::write(uint64_t inode, void *buffer,
template<typename FileStore, FsType FS_TYPE> template<typename FileStore, FsType FS_TYPE>
uint8_t *FileSystemTemplate<FileStore, FS_TYPE>::format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories) { uint8_t *FileSystemTemplate<FileStore, FS_TYPE>::format(void *buffer, typename FileStore::FsSize_t size, bool useDirectories) {
buffer = FileStore::format((uint8_t*) buffer, size, (uint32_t) FS_TYPE); buffer = FileStore::format((uint8_t*) buffer, size, (uint32_t) FS_TYPE);
auto fs = createFileSystem(buffer); FileSystemTemplate<FileStore, FS_TYPE> fs(buffer);
if (buffer && useDirectories) { if (buffer && useDirectories) {
char dirBuff[sizeof(Directory) + sizeof(DirectoryEntry) + 2]; char dirBuff[sizeof(Directory) + sizeof(DirectoryEntry) + 2];
auto *dir = (Directory*) dirBuff; auto *dir = (Directory*) dirBuff;
dir->files(); dir->files();
fs->write(INODE_ROOT_DIR, dirBuff, useDirectories); fs.write(INODE_ROOT_DIR, dirBuff, useDirectories, FileType::Directory);
} }
delete fs;
return (uint8_t*) buffer; return (uint8_t*) buffer;
} }
#ifdef _MSC_VER #ifdef _MSC_VER