[MacRuby-devel] Passing a string buffer to a C function

Laurent Sansonetti lsansonetti at apple.com
Wed May 5 13:39:56 PDT 2010


Hi Mike,

Thanks for the report. I think this is because GLchar* is typed in the runtime as a C-style string. The compiler should allow Pointer objects for this runtime type. Currently, it only allows nil, symbols and strings.

Could you file a bug? We will track this...

Thanks,

Laurent

On May 5, 2010, at 10:43 AM, Mike Taylor wrote:

> 
> Hi all, 
> 
> I'm trying to do some GLSL shaders with MacRuby. However, I'm a bit stumped as to how to 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.
> 
> Any suggestions would be appreciated!
> 
> /\/\ike
> 
> _______________________________________________
> MacRuby-devel mailing list
> MacRuby-devel at lists.macosforge.org
> http://lists.macosforge.org/mailman/listinfo.cgi/macruby-devel

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/macruby-devel/attachments/20100505/b147d629/attachment-0001.html>


More information about the MacRuby-devel mailing list