On Sat, 14 Aug 2004, Miller Puckette wrote:
Hi developers,
I don't have a 64-bit machine handy but would like to try to make Pd runnable on 64-bit linux... I looked in Pd-devel and saw that some, but not all, of the "%x" formatting in calls to sys_vgui() was changed to "%lx", like this:
sprintf(buf, ".x%lx", (t_int)owner);
but that most of the time, pointers are simpy fed to "%x" like this:
sys_vgui(".x%x.c focus %s\n", canvas, x->x_tag);
I think the correct thing would be as in,
sys_vgui(".x%lx.c focus %s\n", (t_int)canvas, x->x_tag);
which is to say, explicityly type "canvas" (or other pointers) to pointer-size integers and then feed to "%lx" format. But before I make this change systematically (hundreds of lines affected) I thought I should ask: do we think this is the most portable formulation?
Hi,
I made pd 64 bit clean for the Debian package and I tested it on my alpha. I have not checked in the changes, though.
Well, basically what I did is changing %x to %lx (for pointers this works without casts). When casts were needed I used (t_int), which I typedef'd to long, because long is the size of a pointer (don't know where this information comes from though, its true in practice, if it is a "C" standard, hmm, don't think so).
If you do not change the typedef in m_pd.h, the compiler complains about int type and long int format.
I will prepare a patch until tomorrow, if you like. Probably this would be a good occasion to import 0.38 into the CVS, I am going to reply on the CVS organisation in my next message.
Guenter
thanks Miller
PD-dev mailing list PD-dev@iem.at http://iem.at/cgi-bin/mailman/listinfo/pd-dev