From 3938cb0282e2de0800eb8683c268d47f7a7ecbd0 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Fri, 21 Jun 2019 23:30:06 -0500 Subject: [PATCH] [ox/fs] Cleanup FileStoreTemplate::read --- .../src/ox/fs/filestore/filestoretemplate.hpp | 45 +++++++++++-------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/deps/ox/src/ox/fs/filestore/filestoretemplate.hpp b/deps/ox/src/ox/fs/filestore/filestoretemplate.hpp index 1c1b7ef2..0cd3f0fa 100644 --- a/deps/ox/src/ox/fs/filestore/filestoretemplate.hpp +++ b/deps/ox/src/ox/fs/filestore/filestoretemplate.hpp @@ -313,27 +313,36 @@ Error FileStoreTemplate::remove(InodeId_t id) { template Error FileStoreTemplate::read(InodeId_t id, void *data, FsSize_t dataSize, FsSize_t *size) const { oxTrace("ox::fs::FileStoreTemplate::read") << "Attempting to read from inode" << id; - auto src = find(id); - if (src.valid()) { - auto srcData = m_buffer->template dataOf(src); - oxTrace("ox::fs::FileStoreTemplate::read::found") << id << "found at"<< src.offset() - << "with data section at" << srcData.offset(); - oxTrace("ox::fs::FileStoreTemplate::read::outSize") << srcData.offset() << srcData.size() << dataSize; - if (srcData.valid() && srcData.size() <= dataSize) { - ox_memcpy(data, srcData, srcData.size()); - if (size) { - *size = src.size(); - } - return OxError(0); - } else { - oxTrace("ox::fs::FileStoreTemplate::read::fail") << "Could not read data section of item:" << id; - oxTrace("ox::fs::FileStoreTemplate::read::fail") << "Item data section size:" << srcData.size(); - } - } else { + auto src = find(id); + + // error check + if (!src.valid()) { oxTrace("ox::fs::FileStoreTemplate::read::fail") << "Could not find requested item:" << id; + return OxError(1); } - return OxError(1); + + auto srcData = m_buffer->template dataOf(src); + oxTrace("ox::fs::FileStoreTemplate::read::found") << id << "found at"<< src.offset() + << "with data section at" << srcData.offset(); + oxTrace("ox::fs::FileStoreTemplate::read::outSize") << srcData.offset() << srcData.size() << dataSize; + + // error check + if (!(srcData.valid() && srcData.size() <= dataSize)) { + oxTrace("ox::fs::FileStoreTemplate::read::fail") + << "Could not read data section of item:" << id; + oxTrace("ox::fs::FileStoreTemplate::read::fail").del("") + << "Item data section size: " << srcData.size() + << ", Expected size: " << dataSize; + return OxError(1); + } + + ox_memcpy(data, srcData, srcData.size()); + if (size) { + *size = src.size(); + } + + return OxError(0); } template