On 2011-05-06 11:56, Mike Parker wrote:
Testing out a new binding I knocked up for a C library. One of the functions takes a struct by value. It looks somewhat like this:struct S {} struct Color { float r,g,b,a; } extern C void function(S* s, Color color, int x, int y, in char*) draw_text; Now, there is another function that adjusts color values when making a color. In C, it is sometimes used like so: draw_text(s, map_color(255, 0, 0, 0), 0, 0, "Blarg"); When I'm calling draw_text like this on the D side, my text output is corrupt. I keep getting weird things like ^^P^, but in the appropriate color. It's consistent, no matter what string I pass, but is different for each color value. If I call draw_text like this: auto color = map_color(...); draw_text(s, color, 0, 0, "Blarg"); It works as expected. Has anyone else seen this, or know of a workaround? I'm going to dig through bugzilla later on and see if it's been reported already, but I'm curious if anyone knows of the cause off hand.
You need to convert the string into a C string; import std.string; auto color = map_color(...); draw_text(s, color, 0, 0, "Blarg".toStringz); -- /Jacob Carlborg
