Well for never passing pointers around you have some great insight. That did it. Thanks..
The final outcode for any interested parties:
x->in_frame = (IplImage *)strtol(s->s_name, NULL, 0);
Now I have another snag, but thats in another email.
Alain
>
> From: Bryan Jurish <moocow(a)ling.uni-potsdam.de>
> Date: 2007/06/22 Fri AM 05:52:47 EDT
> To: nosehair911(a)bellsouth.net
> CC: pd-dev(a)iem.at
> Subject: Re: [PD-dev] sending data out using sprintf
>
> moin Alain,
>
> I've never passed pointers around between externals myself, but...
>
> On 2007-06-22 04:57:35, <nosehair911(a)bellsouth.net> appears to have written:
> > I am trying to send some data out of an outlet using a symbol pointer. I have tried using sprintf like
> > martin suggested with little succes. I am sure I am the one doing something wrong. I am getting a
> > pointer symbol but I am not able to convert the pointer back. In external#1 I have:
> >
> > The out ----------------
> > IplImage *frame;
> > char symstr[10];
> > t_symbol *sym;
> > sprintf(symstr, "%p", frame);
> > sym = gensym(symstr);
> > outlet_symbol(x->m_outFrames, sym);
> >
> > With this I get an address like:
> > symbol 0x1159da0
>
> ... looks kosher to me ...
>
> > ...but on the conversion in external#2 I get the problem. The conversion looks like:
> >
> > The in-----------------------
> > IplImage *in_frame;
> > x->in_frame = (IplImage *)atol(s->s_name);
> > post("frame %s", x->in_frame);
> > post("symbol %s",s->s_name);
> >
> > ...with this I get this:
> > frame (null)
> > symbol 0x1159da0
>
> first of all, you probably want to post("frame %p", x->in_frame), rather
> than "%s". Second, in the docs for my atol (here under linux|glibc), I see:
>
> -- Function: long int atol (const char *STRING)
> This function is similar to the `strtol' function with a BASE
> argument of `10', except that it need not detect overflow errors.
> The `atol' function is provided mostly for compatibility with
> existing code; using `strtol' is more robust.
>
> ... so if your atol() is similar, then trying to convert a hex string to
> a pointer with atol() is an exercise in futility (since in general,
> 10!=16). strtol() ought to work better, auto-detetcting the hex-iness
> of the string by its '0x' prefix. You might also just want to roll out
> the big guns and use the "%x" format to scanf(), but strtol() is likely
> to be the better way to go.
>
> marmosets,
> Bryan
>
> --
> Bryan Jurish "There is *always* one more bug."
> jurish(a)ling.uni-potsdam.de -Lubarsky's Law of Cybernetic Entomology
>