[MacRuby-devel] [MacRuby] #691: Runtime should allow pointer types for C-string arguments

MacRuby ruby-noreply at macosforge.org
Wed May 5 13:50:03 PDT 2010


#691: Runtime should allow pointer types for C-string arguments
--------------------------------+-------------------------------------------
 Reporter:  mike@…              |       Owner:  lsansonetti@…        
     Type:  enhancement         |      Status:  new                  
 Priority:  major               |   Milestone:                       
Component:  MacRuby             |    Keywords:                       
--------------------------------+-------------------------------------------
 The MacRuby runtime does not allow calls to C functions that take a string
 buffer using Pointer types. So, any C functions that need to fill a string
 buffer cannot be called.

 For example, I'm trying to do some GLSL shaders with MacRuby. I cannot
 call glGetShaderInfoLog if the shader compilation fails. The C function's
 prototype is:

 void glGetShaderInfoLog(GLuint shader, GLsizei maxLength, GLsizei *
 length, GLchar * infoLog);

 I couldn't find any docs on how Pointer.new_with_type, so I tried a few
 things, such as:

 log_info = Pointer.new_with_type('c', 4096)
 length = Pointer.new_with_type('i')

 glGetShaderInfoLog(@shader_id, 4096, length, log_info)

 However, I get the error:

 TypeError: can't convert Pointer into String

 It seems that the bridge wants log_info to be a String object. But, using
 a String causes a bus error. I'm expecting that the bridge isn't expecting
 the string to be mutated.

-- 
Ticket URL: <http://www.macruby.org/trac/ticket/691>
MacRuby <http://macruby.org/>



More information about the MacRuby-devel mailing list