diff options
author | Stefan O'Rear <stefanor@cox.net> | 2009-11-10 02:50:44 -0800 |
---|---|---|
committer | Stefan O'Rear <stefanor@cox.net> | 2009-11-10 02:50:44 -0800 |
commit | eca809f540288cedd887dc8ef7ed191030b884b0 (patch) | |
tree | 05f1bc9e6cd39fae155635c687fe123d8fabc124 /crawl-ref/source/mutation.cc | |
parent | 9e2b5b695e17282d4c0de9c7cb5e091fb063c1e4 (diff) | |
download | crawl-ref-eca809f540288cedd887dc8ef7ed191030b884b0.tar.gz crawl-ref-eca809f540288cedd887dc8ef7ed191030b884b0.zip |
Fix off by 1 error in _select_ds_mutations
This bug resulted in a crash, but only with -O2 and only on x86_64. Finding
this bug turned out to require two hours of staring at gdb disassembly output
and tracking the values of registers, since info locals didn't work. I think
my hacker level just went up.
Diffstat (limited to 'crawl-ref/source/mutation.cc')
-rw-r--r-- | crawl-ref/source/mutation.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/crawl-ref/source/mutation.cc b/crawl-ref/source/mutation.cc index 565bdbad9e..8aaf5460d3 100644 --- a/crawl-ref/source/mutation.cc +++ b/crawl-ref/source/mutation.cc @@ -2855,7 +2855,7 @@ try_again: std::set<const facet_def *> facets_used; - for (int tier = ARRAYSZ(ct_of_tier); tier >= 0; --tier) + for (int tier = ARRAYSZ(ct_of_tier) - 1; tier >= 0; --tier) { for (int nfacet = 0; nfacet < ct_of_tier[tier]; ++nfacet) { |