diff options
| author | jj | 2012-07-06 13:32:39 +0200 |
|---|---|---|
| committer | jj | 2012-07-06 13:32:39 +0200 |
| commit | d645d6b0465e4a280aa975e9a78b3508d316ce2f (patch) | |
| tree | fc37df6ad0ae862136dcc0e21566312b24217d95 /plugins/ruby | |
| parent | bef5079d436c70be897d9b25e9bfe12ffa9d0eea (diff) | |
| download | dfhack-d645d6b0465e4a280aa975e9a78b3508d316ce2f.tar.gz dfhack-d645d6b0465e4a280aa975e9a78b3508d316ce2f.tar.bz2 dfhack-d645d6b0465e4a280aa975e9a78b3508d316ce2f.tar.xz | |
ruby: better message on out of bounds array access
Diffstat (limited to 'plugins/ruby')
| -rw-r--r-- | plugins/ruby/ruby-autogen-defs.rb | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/plugins/ruby/ruby-autogen-defs.rb b/plugins/ruby/ruby-autogen-defs.rb index f9858c94..a1cba416 100644 --- a/plugins/ruby/ruby-autogen-defs.rb +++ b/plugins/ruby/ruby-autogen-defs.rb @@ -380,12 +380,18 @@ module DFHack def [](i) i = _indexenum.int(i) if _indexenum i += @_length if i < 0 - _tgat(i)._get + if t = _tgat(i) + t._get + end end def []=(i, v) i = _indexenum.int(i) if _indexenum i += @_length if i < 0 - _tgat(i)._set(v) + if t = _tgat(i) + t._set(v) + else + raise 'index out of bounds' + end end include Enumerable @@ -444,7 +450,7 @@ module DFHack if idx >= length insert_at(idx, 0) elsif idx < 0 - raise 'invalid idx' + raise 'index out of bounds' end @_tg._at(valueptr_at(idx))._set(v) end @@ -530,7 +536,7 @@ module DFHack if idx >= length insert_at(idx, v) elsif idx < 0 - raise 'invalid idx' + raise 'index out of bounds' else DFHack.memory_vectorbool_setat(@_memaddr, idx, v) end @@ -582,7 +588,7 @@ module DFHack idx = _indexenum.int(idx) if _indexenum idx += length if idx < 0 if idx >= length or idx < 0 - raise 'invalid idx' + raise 'index out of bounds' else DFHack.memory_bitarray_set(@_memaddr, idx, v) end @@ -608,11 +614,17 @@ module DFHack end def [](i) i += _length if i < 0 - _tgat(i)._get + if t = _tgat(i) + t._get + end end def []=(i, v) i += _length if i < 0 - _tgat(i)._set(v) + if t = _tgat(i) + t._set(v) + else + raise 'index out of bounds' + end end def _set(a) a.each_with_index { |v, i| self[i] = v } |
