diff --git a/doomsday/libdoomsday/include/doomsday/defs/dedregister.h b/doomsday/libdoomsday/include/doomsday/defs/dedregister.h index 666148f143..ef62b50bf8 100644 --- a/doomsday/libdoomsday/include/doomsday/defs/dedregister.h +++ b/doomsday/libdoomsday/include/doomsday/defs/dedregister.h @@ -103,7 +103,7 @@ class LIBDOOMSDAY_PUBLIC DEDRegister de::Record const & operator [] (int index) const; de::Record * tryFind(de::String const &key, de::String const &value); - de::Record const * tryFind(de::String const &key, de::String const &value) const; + de::Record const * tryFind(de::String const &key, de::String value) const; de::Record & find(de::String const &key, de::String const &value); de::Record const & find(de::String const &key, de::String const &value) const; diff --git a/doomsday/libdoomsday/src/defs/dedregister.cpp b/doomsday/libdoomsday/src/defs/dedregister.cpp index 73be5ad185..1adb3d3110 100644 --- a/doomsday/libdoomsday/src/defs/dedregister.cpp +++ b/doomsday/libdoomsday/src/defs/dedregister.cpp @@ -304,16 +304,21 @@ Record const &DEDRegister::operator [] (int index) const Record *DEDRegister::tryFind(String const &key, String const &value) { - if(!has(key, value)) return 0; - RecordValue &val = d->lookup(key).element(TextValue(value)).as(); - return val.record(); + return const_cast(const_cast(this)->tryFind(key, value)); } -Record const *DEDRegister::tryFind(String const &key, String const &value) const +Record const *DEDRegister::tryFind(String const &key, String value) const { - if(!has(key, value)) return 0; - RecordValue const &val = d->lookup(key).element(TextValue(value)).as(); - return val.record(); + auto foundKey = d->keys.constFind(key); + if(foundKey == d->keys.constEnd()) return 0; + + if(!foundKey.value().flags.testFlag(CaseSensitive)) + { + // Case insensitive lookup is done in lower case. + value = value.lower(); + } + + return d->lookup(key).element(TextValue(value)).as().record(); } Record &DEDRegister::find(String const &key, String const &value)