diff --git a/plugins/ruby/ruby-autogen-defs.rb b/plugins/ruby/ruby-autogen-defs.rb index f9858c949..a1cba4168 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 }