summaryrefslogtreecommitdiff
path: root/plugins/ruby
diff options
context:
space:
mode:
authorjj2012-07-06 13:32:39 +0200
committerjj2012-07-06 13:32:39 +0200
commitd645d6b0465e4a280aa975e9a78b3508d316ce2f (patch)
treefc37df6ad0ae862136dcc0e21566312b24217d95 /plugins/ruby
parentbef5079d436c70be897d9b25e9bfe12ffa9d0eea (diff)
downloaddfhack-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.rb26
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 }