diff options
author | Adam Borowski <kilobyte@angband.pl> | 2013-07-15 16:29:45 +0200 |
---|---|---|
committer | Adam Borowski <kilobyte@angband.pl> | 2013-07-15 16:41:41 +0200 |
commit | be12424dbfaea0b7a3c8fe008eccd531597bc20f (patch) | |
tree | 0276ddc029297608a5a207a601eae8242f57145b /crawl-ref/source/feature.cc | |
parent | 6981088144c79af6a1f595fbda5e12583c675e43 (diff) | |
download | crawl-ref-be12424dbfaea0b7a3c8fe008eccd531597bc20f.tar.gz crawl-ref-be12424dbfaea0b7a3c8fe008eccd531597bc20f.zip |
Fix a memory+speed leak if features are redefined over and over.
A map can recycle overwritten keys, a vector can't.
Diffstat (limited to 'crawl-ref/source/feature.cc')
-rw-r--r-- | crawl-ref/source/feature.cc | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/crawl-ref/source/feature.cc b/crawl-ref/source/feature.cc index 8c817bfead..c2ad9c021d 100644 --- a/crawl-ref/source/feature.cc +++ b/crawl-ref/source/feature.cc @@ -29,11 +29,13 @@ const feature_def &get_feature_def(dungeon_feature_type feat) static void _apply_feature_overrides() { - for (int i = 0, size = Options.feature_overrides.size(); i < size; ++i) + for (map<dungeon_feature_type, feature_def>::const_iterator fo + = Options.feature_overrides.begin(); + fo != Options.feature_overrides.end(); + ++fo) { - const feature_override &fov = Options.feature_overrides[i]; - const feature_def &ofeat = fov.override; - feature_def &feat = Features[fov.object]; + const feature_def &ofeat = fo->second; + feature_def &feat = Features[fo->first]; ucs_t c; if (ofeat.symbol && (c = get_glyph_override(ofeat.symbol))) |