- for(ActionMap::const_iterator i=begin; i!=end; ++i)
- if(signature_match(key.signature, i->first.signature))
- return i->second;
+ LoaderAction *act = nullptr;
+ int match = 0;
+ for(auto i=begin; i!=end; ++i)
+ {
+ int m = signature_match(key.signature, i->first.signature);
+ if(m>match)
+ {
+ act = i->second;
+ match = m;
+ }
+ }
+
+ if(!match)
+ throw invalid_signature(key.keyword, key.signature);