On 5/6/11, Jacob Carlborg <d...@me.com> wrote: > 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. >> > > Don't know if it has anything to do with the problem but you have to > watch out with the floats, they are initialized to NaN. > > -- > /Jacob Carlborg >
And char arrays are initialized to 0xFF, which could be another source of problems.