Le mercredi 14 janvier 2015 à 11:27 -0800, J Luis a écrit :
> OK, I've uploaded the code to IUP repo.
> What I mean in last message is that if I remove the type assignment in
> line 19 of
> 
> https://github.com/joa-quim/IUP.jl/blob/master/examples/cdtest_.jl
> 
> than the line 133 does not error, otherwise it happens what I
> described.
> Sorry but don't know how to make a shorter example.
Just a shot in the dark, but if instead of this:
ctgc_l = tCTC_l(C_NULL)
ctgc_l.iup_canvas = t
cdActivate(ctgc_l.iup_canvas)

you do this:
ctgc_l = tCTC_l(t)
cdActivate(ctgc_l.iup_canvas)

does it make any difference?

(Please copy/paste the output of the Julia console.)

Also, I guess you've made sure you start from a clean workspace? What
does methods(cdActivate) say?

Regards

> quarta-feira, 14 de Janeiro de 2015 às 18:58:54 UTC, Milan
> Bouchet-Valat escreveu:
>         Le mercredi 14 janvier 2015 à 10:44 -0800, J Luis a écrit : 
>         > What I found is if, for simplification, I restrict the type
>         to (that 
>         > is without type assignment) 
>         > 
>         > type tCTC_l 
>         >     iup_canvas 
>         > end 
>         > 
>         > than it works. But if I change it to 
>         > 
>         > type tCTC_l 
>         >     iup_canvas::Ptr{cdCanvas} 
>         > end 
>         > 
>         > it errors again. For curiosity I tried also 
>         > 
>         > type tCTC_l 
>         >     iup_canvas::Int64 
>         > end 
>         > 
>         > and now 
>         > 
>         > t => Ptr{cdCanvas} @0x0000000021c3f4a0 
>         > ctgc_l.iup_canvas => 566490272 
>         > ERROR: `cdActivate` has no method matching
>         cdActivate(::Int64) 
>         > 
>         > that is, it converted the Ptr{cdCanvas} (the 't') to Int64,
>         so it 
>         > seams that in the first instance it converted one
>         Ptr{cdCanvas} to 
>         > another Ptr{cdCanvas} ending up with TWO declarations of
>         the 
>         > Ptr{cdCanvas}. 
>         > Does it make any sense? 
>         No. I think you should at the very least show us a copy/paste
>         of the 
>         code you run. Debugging without a reproducible example is hard
>         enough; 
>         debugging without seeing the commands that triggered the bug
>         is 
>         impossible. 
>         
>         
>         Regards 
>         
>         > quarta-feira, 14 de Janeiro de 2015 às 17:50:51 UTC, J Luis
>         escreveu: 
>         >         Yes, an synthetic example would be nice, but I
>         strongly 
>         >         suspect that if I was able to create one than it
>         would because 
>         >         I had found the problem. 
>         >         
>         >         quarta-feira, 14 de Janeiro de 2015 às 16:15:20 UTC,
>         Milan 
>         >         Bouchet-Valat escreveu: 
>         >                 Le mercredi 14 janvier 2015 à 07:42 -0800, J
>         Luis a 
>         >                 écrit : 
>         >                 > Well, I can make the current (failing)
>         code 
>         >                 available in the IUP repo 
>         >                 > but to run it implies installing the IUP
>         lib, and 
>         >                 IUP.jl which 
>         >                 > probably no one tested in other than
>         Windows. 
>         >                 But the problem does not seem to involve IUP
>         (or via a 
>         >                 nasty memory 
>         >                 corruption bug). You should be able to
>         reproduce it 
>         >                 with a short 
>         >                 artificial example. 
>         >                 
>         >                 
>         >                 Regards 
>         >                 
>         >                 > quarta-feira, 14 de Janeiro de 2015 às
>         15:30:20 UTC, 
>         >                 Milan Bouchet-Valat escreveu: 
>         >                 >         Le mercredi 14 janvier 2015 à
>         06:54 -0800, J 
>         >                 Luis a écrit : 
>         >                 >         > I already fall in those two
>         forms of 
>         >                 troubles (double definition and 
>         >                 >         > double inclusion of the file
>         where the 
>         >                 type is defined) so I'm aware 
>         >                 >         > of it. As much as I can tell
>         with 
>         >                 grepping, that is not occurring 
>         >                 >         > now. 
>         >                 >         > Maybe a third (unknown to me)
>         form of this 
>         >                 type of issue? 
>         >                 >         Would you be able to create a
>         reproducible 
>         >                 example? 
>         >                 >         
>         >                 >         
>         >                 >         Regards 
>         >                 >         
>         >                 >         > quarta-feira, 14 de Janeiro de
>         2015 às 
>         >                 14:41:56 UTC, Keno Fischer 
>         >                 >         > escreveu: 
>         >                 >         >         Are you maybe
>         accidentally 
>         >                 defining cdCanvas twice or in two 
>         >                 >         >         different modules? 
>         >                 >         >         
>         >                 >         >         On Wed, Jan 14, 2015 at
>         3:40 PM, J 
>         >                 Luis <[email protected]> 
>         >                 >         >         wrote: 
>         >                 >         >                 BTW, if that
>         matters, 
>         >                 'ctgc' is a global variable. 
>         >                 >         >                 
>         >                 >         >                 quarta-feira, 14
>         de 
>         >                 Janeiro de 2015 às 14:37:05 UTC, J 
>         >                 >         >                 Luis escreveu: 
>         >                 >         >                         Hi,
>         thanks for 
>         >                 looking into this. 
>         >                 >         >                         
>         >                 >         >                         If I
>         make them 
>         >                 show, as 
>         >                 >         >                         
>         >                 >         >                         @show 
>         >                 ctgc.iup_canvas 
>         >                 >         > 
>         >                 ctgc.iup_canvas = t 
>         >                 >         >                         @show t 
>         >                 >         >                         @show 
>         >                 ctgc.iup_canvas 
>         >                 >         >                         
>         >                 >         >                         it
>         'shows' 
>         >                 >         >                         
>         >                 >         >
>         ctgc.iup_canvas => 
>         >                 Ptr{cdCanvas} 
>         >                 >         > 
>         >                 @0x0000000000000000 
>         >                 >         >                         t =>
>         Ptr{cdCanvas} 
>         >                 @0x0000000022c6d6c0 
>         >                 >         >
>         ctgc.iup_canvas => 
>         >                 Ptr{cdCanvas} 
>         >                 >         > 
>         >                 @0x0000000022c6d6c0 
>         >                 >         >                         
>         >                 >         >                         which
>         shows that 
>         >                 type has not changed after 
>         >                 >         >                         the
>         attribution 
>         >                 and  that it has the correct 
>         >                 >         >                         return
>         type of 
>         >                 cdCreateCanvas(). 
>         >                 >         >                         That is
>         why I 
>         >                 initialized the ctgc type with 
>         >                 >         >                         
>         >                 >         > 
>         >                 convert(Ptr{cdCanvas},0) 
>         >                 >         >                         
>         >                 >         >                         (see
>         first member 
>         >                 in my first post) 
>         >                 >         >                         
>         >                 >         >                         
>         >                 >         >
>         quarta-feira, 14 
>         >                 de Janeiro de 2015 às 
>         >                 >         >                         13:39:21
>         UTC, 
>         >                 Milan Bouchet-Valat escreveu: 
>         >                 >         >
>         Le 
>         >                 mercredi 14 janvier 2015 à 05:32 
>         >                 >         >
>         -0800, J 
>         >                 Luis a écrit : 
>         >                 >         >
>         > Hi, 
>         >                 >         >
>         > I have 
>         >                 had quite some head-aches 
>         >                 >         >
>         with types 
>         >                 (converted from C structs) 
>         >                 >         >
>         > but this 
>         >                 one wins. 
>         >                 >         >
>         > 
>         >                 >         >
>         > I have 
>         >                 this type (from IUP) 
>         >                 >         >
>         > 
>         >                 >         >
>         > 
>         >                 >         >
>         > type 
>         >                 tCTC 
>         >                 >         >
>         > 
>         >                 iup_canvas::Ptr{cdCanvas} 
>         >                 >         >
>         > 
>         >                 w::Cint 
>         >                 >         >
>         > 
>         >                 h::Cint 
>         >                 >         >
>         > ... 
>         >                 >         >
>         > 
>         >                 >         >
>         > which I 
>         >                 initialize as 
>         >                 >         >
>         > 
>         >                 >         >
>         > ctgc = 
>         >                 tCTC( 
>         >                 >         >
>         > 
>         >                 convert(Ptr{cdCanvas},0), 
>         >                 >         >
>         > 
>         >                 int32(0), int32(0), 
>         >                 >         >
>         > ... 
>         >                 >         >
>         > 
>         >                 >         >
>         > and now 
>         >                 the mystery. 
>         >                 >         >
>         > 
>         >                 >         >
>         >     t = 
>         >                 >         > 
>         >                 cdCreateCanvas(cdContextIup(), 
>         >                 >         > 
>         >                 IupGetHandle("cnvMain")) 
>         >                 >         >
>         > 
>         >                 ctgc.iup_canvas = t 
>         >                 >         >
>         > 
>         >                 cdActivate(t); 
>         >                 >         >
>         > 
>         >                 cdActivate(ctgc.iup_canvas); 
>         >                 >         >
>         > 
>         >                 >         >
>         > 
>         >                 >         >
>         > the last 
>         >                 line in the chunk above 
>         >                 >         >
>         errors 
>         >                 with 
>         >                 >         >
>         > 
>         >                 >         >
>         > 
>         >                 >         >
>         > ERROR: 
>         >                 `cdActivate` has no method 
>         >                 >         >
>         matching 
>         >                 cdActivate(::Ptr{cdCanvas}) 
>         >                 >         >
>         >  in 
>         >                 CDTestInit at C:\programs\Gits 
>         >                 >         >
>         \IUP.jl 
>         >                 \examples\cdtest_.jl:125 
>         >                 >         >
>         >  in 
>         >                 cdtest at C:\programs\Gits 
>         >                 >         >
>         \IUP.jl 
>         >                 \examples\cdtest_.jl:92 
>         >                 >         >
>         > 
>         >                 >         >
>         > 
>         >                 >         >
>         > So `t` 
>         >                 and `ctgc.iup_canvas` are 
>         >                 >         >
>         actually 
>         >                 two different entities 
>         >                 >         >
>         > 
>         >                 (although their pointers are ofc the 
>         >                 >         >
>         same as I 
>         >                 can see if I @show 
>         >                 >         >
>         > them)? 
>         >                 >         >
>         Well, you 
>         >                 need to show us more 
>         >                 >         >
>         details, 
>         >                 e.g. tell us what 
>         >                 >         > 
>         >                 cdCreateCanvas() does, and what type 
>         >                 >         >
>         it 
>         >                 returns. The pointers might hold 
>         >                 >         >
>         the same 
>         >                 address, but they still may 
>         >                 >         >
>         be of 
>         >                 different types. @show should 
>         >                 >         >
>         make this 
>         >                 visible, but without the 
>         >                 >         >
>         output we 
>         >                 cannot check. 
>         >                 >         >                                 
>         >                 >         >                                 
>         >                 >         >
>         Regards 
>         >                 >         >                                 
>         >                 >         >         
>         >                 >         >         
>         >                 >         
>         >                 
>         

Reply via email to