+ if (uoffset + size > node->valid_size)
+ {
+ ssize_t bytes = 0;
+
+ if (uoffset < node->valid_size)
+ {
+ bytes = exfat_generic_pread(ef, node, buffer,
+ node->valid_size - uoffset, offset);
+ if (bytes < 0 || (size_t) bytes < node->valid_size - uoffset)
+ return bytes;
+ }
+ memset(buffer + bytes, 0,
+ MIN(size - bytes, node->size - node->valid_size));
+ return MIN(size, node->size - uoffset);
+ }
+
+ cluster = exfat_advance_cluster(ef, node, uoffset / CLUSTER_SIZE(*ef->sb));