projects
/
open-adventure.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
8a3757d
)
Dix off-by-one errors induced by tightening some array bounds.
author
Eric S. Raymond
<esr@thyrsus.com>
Sun, 25 Jun 2017 17:17:35 +0000
(13:17 -0400)
committer
Eric S. Raymond
<esr@thyrsus.com>
Sun, 25 Jun 2017 17:17:35 +0000
(13:17 -0400)
init.c
patch
|
blob
|
history
newdungeon.py
patch
|
blob
|
history
diff --git
a/init.c
b/init.c
index 03a574f13eb5dd3f7126cfcdb7488d3131a240af..194abe3488aa6d7255982bec0eec30b3fa7d986b 100644
(file)
--- a/
init.c
+++ b/
init.c
@@
-38,11
+38,10
@@
void initialise(void)
* This also sets up "game.place" and "fixed" as copies of "PLAC" and
* "FIXD". Also, since two-placed objects are typically best
* described last, we'll drop them first. */
* This also sets up "game.place" and "fixed" as copies of "PLAC" and
* "FIXD". Also, since two-placed objects are typically best
* described last, we'll drop them first. */
- for (int i = 1; i <= NOBJECTS; i++) {
- int k = NOBJECTS + 1 - i;
- if (object_descriptions[k].fixd > 0) {
- DROP(k + NOBJECTS, object_descriptions[k].fixd);
- DROP(k, object_descriptions[k].plac);
+ for (int i = NOBJECTS; i >= 1; i--) {
+ if (object_descriptions[i].fixd > 0) {
+ DROP(i + NOBJECTS, object_descriptions[i].fixd);
+ DROP(i, object_descriptions[i].plac);
}
}
}
}
diff --git
a/newdungeon.py
b/newdungeon.py
index 28c7b63e4cf8679934464b3892df5cf2d8f68f87..39998e7c1bf2369f2579ddc4de08c1d8de10ebfb 100755
(executable)
--- a/
newdungeon.py
+++ b/
newdungeon.py
@@
-221,7
+221,7
@@
def get_turn_thresholds(trn):
return trn_str
def get_locations(loc):
return trn_str
def get_locations(loc):
- template = """ {{
+ template = """ {{
// {}
.description = {{
.small = {},
.big = {},
.description = {{
.small = {},
.big = {},
@@
-231,17
+231,17
@@
def get_locations(loc):
}},
"""
loc_str = ""
}},
"""
loc_str = ""
- for
item in loc
:
+ for
(i, item) in enumerate(loc)
:
short_d = make_c_string(item[1]["description"]["short"])
long_d = make_c_string(item[1]["description"]["long"])
sound = item[1].get("sound", "SILENT")
loud = "true" if item[1].get("loud") else "false"
short_d = make_c_string(item[1]["description"]["short"])
long_d = make_c_string(item[1]["description"]["long"])
sound = item[1].get("sound", "SILENT")
loud = "true" if item[1].get("loud") else "false"
- loc_str += template.format(short_d, long_d, sound, loud)
+ loc_str += template.format(
i,
short_d, long_d, sound, loud)
loc_str = loc_str[:-1] # trim trailing newline
return loc_str
def get_object_descriptions(obj):
loc_str = loc_str[:-1] # trim trailing newline
return loc_str
def get_object_descriptions(obj):
- template = """ {{
+ template = """ {{
// {}
.inventory = {},
.plac = {},
.fixd = {},
.inventory = {},
.plac = {},
.fixd = {},
@@
-258,7
+258,7
@@
def get_object_descriptions(obj):
}},
"""
obj_str = ""
}},
"""
obj_str = ""
- for
item in obj
:
+ for
(i, item) in enumerate(obj)
:
attr = item[1]
i_msg = make_c_string(attr["inventory"])
longs_str = ""
attr = item[1]
i_msg = make_c_string(attr["inventory"])
longs_str = ""
@@
-305,7
+305,7
@@
def get_object_descriptions(obj):
sys.stderr.write("dungeon: unknown object location in %s\n" % locs)
sys.exit(1)
treasure = "true" if attr.get("treasure") else "false"
sys.stderr.write("dungeon: unknown object location in %s\n" % locs)
sys.exit(1)
treasure = "true" if attr.get("treasure") else "false"
- obj_str += template.format(i_msg, locs[0], locs[1], treasure, longs_str, sounds_str, texts_str)
+ obj_str += template.format(i
, i
_msg, locs[0], locs[1], treasure, longs_str, sounds_str, texts_str)
obj_str = obj_str[:-1] # trim trailing newline
return obj_str
obj_str = obj_str[:-1] # trim trailing newline
return obj_str
@@
-397,8
+397,8
@@
if __name__ == "__main__":
)
h = h_template.format(
)
h = h_template.format(
- len(db["locations"]),
- len(db["object_descriptions"]),
+ len(db["locations"])
-1
,
+ len(db["object_descriptions"])
-1
,
len(db["hints"]),
len(db["classes"]),
len(db["obituaries"]),
len(db["hints"]),
len(db["classes"]),
len(db["obituaries"]),