- char sig_buf[8];
- unsigned sig_len = io.read(sig_buf, sizeof(sig_buf));
- string sig(sig_buf, sig_len);
- io.seek(0, IO::S_BEG);
+ list<RegisterBase *> &loaders = get_registered_loaders();
+ if(registered_loaders_changed)
+ {
+ registered_loaders_changed = false;
+ loaders.sort(signature_size_compare);
+ }
+
+ vector<char> sig_buf(loaders.back()->get_signature_size());
+ unsigned sig_len = io.read(&sig_buf[0], sig_buf.size());
+ string signature(sig_buf.begin(), sig_buf.end());