summaryrefslogtreecommitdiff
path: root/plugins/provider/recProvider/recProvider.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/provider/recProvider/recProvider.cpp')
-rw-r--r--plugins/provider/recProvider/recProvider.cpp21
1 files changed, 9 insertions, 12 deletions
diff --git a/plugins/provider/recProvider/recProvider.cpp b/plugins/provider/recProvider/recProvider.cpp
index 4e331bf..22fc5eb 100644
--- a/plugins/provider/recProvider/recProvider.cpp
+++ b/plugins/provider/recProvider/recProvider.cpp
@@ -238,20 +238,17 @@ public:
return false;
}
- if(!OpenFile(1)) return false;
- size_t size = 0;
- while(true){
- fseek(fileFD, 0, SEEK_END);
- size = ftell(fileFD);
- if(offset < size){
- return fseek(fileFD, offset, SEEK_SET) == 0;
- } else {
- offset -= size;
- if(OpenNext()) return false;
- }
+ unsigned int i = 0;
+ for(; i < offsets.size(); ++i){
+ if(offset < offsets[i])
+ break;
+ else
+ offset -= offsets[i];
}
+ if(i >= offsets.size()) return false;
+ if(!OpenFile(i+1)) return false;
- return false;
+ return fseek(fileFD, offset, SEEK_SET) == 0;
}