Hi Andreas,

the function cairo_copy_path does return a pointer to a cairo_path_t. So 
the return value of your ccall is wrong.

Cheers

Tobi

Am Dienstag, 9. Juni 2015 20:00:39 UTC+2 schrieb Andreas Lobinger:
>
> Hello colleagues,
>
> i'm trying to get further interfacing to libcairo, but i somehow run into 
> problems for matching c structures.
>
> My example
> using Cairo
>
> i = CairoImageSurface(100,100,Cairo.FORMAT_RGB24)
> cr = CairoContext(i)
> select_font_face (cr, "Sans", Cairo.FONT_SLANT_NORMAL,
>                          Cairo.FONT_WEIGHT_BOLD);
> set_font_size (cr, 90.0);
> move_to (cr, 10.0, 135.0);
> text_path (cr, "5");
>
> # typedef struct cairo_path {
> #     cairo_status_t status;
> #     cairo_path_data_t *data;
> #     int num_data;
> # } cairo_path_t;
>
> type Pdata 
>     status::Cairo.status_t    
>     data::Ptr{Uint32}
>     num_data::Uint32
> end
>
> function pdata_copy_path(ctx::CairoContext)
>     ccall((:cairo_copy_path, Cairo._jl_libcairo),
>                     Pdata, (Ptr{Void},),ctx.ptr)
> end    
>
> p = pdata_copy_path(cr);
>
> returns, here:
>
> lobi@orange4:~/juliarepo$ ../julia/julia 
>                _
>    _       _ _(_)_     |  A fresh approach to technical computing
>   (_)     | (_) (_)    |  Documentation: http://docs.julialang.org
>    _ _   _| |_  __ _   |  Type "help()" for help.
>   | | | | | | |/ _` |  |
>   | | |_| | | | (_| |  |  Version 0.3.9 (2015-05-30 11:24 UTC)
>  _/ |\__'_|_|_|\__'_|  |  
> |__/                   |  x86_64-linux-gnu
>
> julia> include("cairop2.jl")
> Pdata(87413648,Ptr{Uint32} @0x000000000000004f,0x0387dd54)
>
> julia> 
>
> which i do not consider correct, as i know the cairo status (first entry 
> in Pdata) should be 0, the following pointer to data is the number of 
> entries (i have a correctly working c program for the same example).
>
> I spare you the details, but the same code run with a v0.4.0-dev+5208 
> segfaults...
>
> How do i get my 3 entries in the path data structure (see cairo.h 
> definition in comment inline) correct (and version independent)?
>
> Wishing a happy day,
>          Andreas
>
>
>

Reply via email to