return 0;\r
}\r
\r
+ // Sanity Check offset\r
+ if(offset > node->Size) {\r
+ //Log("FAT_Read: Reading past EOF (%i > %i)", offset, node->Size);\r
+ return 0;\r
+ }\r
+ // Clamp Size\r
+ if(offset + length > node->Size) {\r
+ //Log("FAT_Read: Reading past EOF (%lli + %lli > %lli), clamped to %lli",\r
+ // offset, length, node->Size, node->Size - offset);\r
+ length = node->Size - offset;\r
+ }\r
+ \r
// Single Cluster including offset\r
if(length + offset < bpc)\r
{\r
memcpy( buffer, (void*)( tmpBuf + offset%bpc ), length );\r
free(tmpBuf);\r
LEAVE('i', 1);\r
- return 1;\r
+ return length;\r
}\r
\r
preSkip = offset / bpc;\r
if (count == 1) {\r
free(tmpBuf);\r
LEAVE('i', 1);\r
- return 1;\r
+ return length;\r
}\r
\r
cluster = FAT_int_GetFatValue(handle, cluster);\r
#endif\r
\r
LEAVE('s', ret);\r
- return VFS_FREEPLZ(ret);\r
+ return ret;\r
}\r
\r
/**\r