diff --git a/dali/base/dadfs.cpp b/dali/base/dadfs.cpp index 6e2c6b5f113..057bef01cbc 100644 --- a/dali/base/dadfs.cpp +++ b/dali/base/dadfs.cpp @@ -6271,20 +6271,22 @@ class CDistributedSuperFile: public CDistributedFileBase virtual IDistributedFile &querySubFile(unsigned idx,bool sub) override { CriticalBlock block (sect); - if (sub) { + if (sub) + { + unsigned subfilen = idx; ForEachItemIn(i,subfiles) { IDistributedFile &f=subfiles.item(i); IDistributedSuperFile *super = f.querySuperFile(); if (super) { unsigned ns = super->numSubFiles(true); - if (ns>idx) - return super->querySubFile(idx,true); - idx -= ns; + if (ns>subfilen) + return super->querySubFile(subfilen,true); + subfilen -= ns; } - else if (idx--==0) + else if (subfilen--==0) return f; } - // fall through to error + throw makeStringExceptionV(-1,"CDistributedSuperFile::querySubFile(%u) for superfile %s - subfile doesn't exist ", idx, logicalName.get()); } return subfiles.item(idx); }