From c089534f7315190b6df7d6ce6390b99fc3adc6b0 Mon Sep 17 00:00:00 2001 From: jj Date: Fri, 12 Oct 2012 13:33:58 +0200 Subject: [PATCH] ruby: fix assigning value to pointer to number --- plugins/ruby/ruby-autogen-defs.rb | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/plugins/ruby/ruby-autogen-defs.rb b/plugins/ruby/ruby-autogen-defs.rb index 4470c8022..d5bcb08f4 100644 --- a/plugins/ruby/ruby-autogen-defs.rb +++ b/plugins/ruby/ruby-autogen-defs.rb @@ -282,6 +282,10 @@ module DFHack DFHack.memory_read_int32(@_memaddr) & 0xffffffff end + def _setp(v) + DFHack.memory_write_int32(@_memaddr, v) + end + def _get addr = _getp return if addr == 0 @@ -294,7 +298,15 @@ module DFHack case v when Pointer; DFHack.memory_write_int32(@_memaddr, v._getp) when MemStruct; DFHack.memory_write_int32(@_memaddr, v._memaddr) - when Integer; DFHack.memory_write_int32(@_memaddr, v) + when Integer + if @_tg and @_tg.kind_of?(MemHack::Number) + if _getp == 0 + _setp(DFHack.malloc(@_tg._bits/8)) + end + @_tg._at(_getp)._set(v) + else + DFHack.memory_write_int32(@_memaddr, v) + end when nil; DFHack.memory_write_int32(@_memaddr, 0) else _get._set(v) end