[cairo-bugs] [Bug 84908] New: Compilation errors with MSVC after recent changes to 'cairo-path-stroke-traps.c'

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Sat Oct 11 03:40:44 PDT 2014


https://bugs.freedesktop.org/show_bug.cgi?id=84908

            Bug ID: 84908
           Summary: Compilation errors with MSVC after recent changes to
                    'cairo-path-stroke-traps.c'
           Product: cairo
           Version: unspecified
          Hardware: Other
                OS: Windows (All)
            Status: NEW
          Severity: normal
          Priority: medium
         Component: general
          Assignee: chris at chris-wilson.co.uk
          Reporter: johne53 at tiscali.co.uk
        QA Contact: cairo-bugs at cairographics.org

Firstly, apologies. I'm not sure whether this needs to get filed under
'general' or under 'win32-backend' but anyway, here it is...

Since updating from git master about a week ago (ver 1.13.1) I can no longer
compile 'cairo-path-stroke-traps.c' with Microsoft VC8. I get errors at lines
302, 303, 464 and 465. As an example, line 302 looks like this:-

cairo_point_t t[] = { in->point, *inpt, *outpt }

Given that 'in->point', '*inpt' and '*outpt' are all structs, I suspect the
problem is that the compiler would need to generate a default copy c'tor for
'cairo_point_t'. MSVC does this when compiling as C++ but not when compiling as
'C'. Unfortunately, if I change my project to build as C++ I just get a whole
slew of other errors elsewhere. So currently, I can't compile as 'C', nor as
C++.

The errors at lines 302 and 303 can be fixed as follows. I'm not claiming that
my fix is the most elegant one (and of course, somebody will need to verify
that it fulfils the original intention) but it does at least compile!! If
somebody wants to come up with a more elegant solution, this should at least
tell them what's going wrong:-

1) Remove lines 302 and 303 and replace with the following code:-

cairo_point_t t[3];
cairo_point_t e[4];

memcpy( &t[0], &in->point, sizeof(cairo_point_t) );
memcpy( &t[1], inpt, sizeof(cairo_point_t) );
memcpy( &t[2], outpt, sizeof(cairo_point_t) );

memcpy( &e[0], &in->cw, sizeof(cairo_point_t) );
memcpy( &e[1], &in->ccw, sizeof(cairo_point_t) );
memcpy( &e[2], &out->cw, sizeof(cairo_point_t) );
memcpy( &e[3], &out->ccw, sizeof(cairo_point_t) );

2) It looks like the same fix would probably work for lines 464 and 465.

Hope that helps,

John

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo-bugs/attachments/20141011/0022d5aa/attachment.html>


More information about the cairo-bugs mailing list