Method: Fiddle::CStructEntity.malloc
- Defined in:
- lib/fiddle/struct.rb
.malloc(types, func = nil, size = size(types)) ⇒ Object
Allocates a C struct with the types provided.
See Fiddle::Pointer.malloc for memory management issues.
293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 |
# File 'lib/fiddle/struct.rb', line 293 def CStructEntity.malloc(types, func = nil, size = size(types)) if block_given? and func.nil? = "a free function must be supplied to #{self}.malloc " + "when it is called with a block" raise ArgumentError, end pointer = Pointer.malloc(size) begin struct = new(pointer, types, func) rescue pointer.free = func pointer.call_free raise end if block_given? begin yield(struct) ensure struct.call_free end else struct end end |