<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
Is there a point of having more than one objectinfo at any point in
time?<br>
<br>
If not, you could have a static reference to that one objectinfo, or
possibly have it instantiated in the background as an object that it
associated with each canvas (or one per pd instance) and use the
visual [objectinfo] as a mere proxy that forwards stuff to the
invisible object (which means as a courtesy you could have multiple
instances of [objectinfo] without any issues).<br>
<br>
<div class="moz-cite-prefix">On 10/2/2015 11:50 AM, Jonathan Wilkes
via Pd-list wrote:<br>
</div>
<blockquote
cite="mid:1755010832.308255.1443801040476.JavaMail.yahoo@mail.yahoo.com"
type="cite">
<div style="color:#000; background-color:#fff;
font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial,
Lucida Grande, sans-serif;font-size:16px">
<div id="yiv4647819552">
<div id="yui_3_16_0_1_1443799821638_5267">
<div id="yui_3_16_0_1_1443799821638_5266"
style="color:#000;background-color:#fff;font-family:HelveticaNeue,
Helvetica Neue, Helvetica, Arial, Lucida Grande,
sans-serif;font-size:16px;">
<div id="yiv4647819552yui_3_16_0_1_1443799821638_2826">I
do have [objectinfo] inside Pd-l2ork. But I don't have
a method to</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_2895">return
the memory location of the object.</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3065"><br
clear="none">
</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3142">I also
have a "find" method in [canvasinfo] which is very
handy-- but it<br clear="none">
</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3180">
<div id="yui_3_16_0_1_1443799821638_5531" dir="ltr">searches
based on the box text. I could add an obscure</div>
</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3259">"find_by_memory_location"
method which would do the trick. Then it'd just be a
matter of:</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3336">1)
generate error for some object</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3337">2)
note the object's address</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3384">3)
delete the object</div>
</div>
</div>
</div>
</div>
</blockquote>
<br>
I wonder if there is a more graceful way of doing this. If not, you
could accompany object's address with its atomic creation time
(which would require adding a member to a struct as long as it is
internal to pd and not readily instantiated/accessible in 3rd-party
externals) and that way compare whether it is the same object...<br>
<br>
<blockquote
cite="mid:1755010832.308255.1443801040476.JavaMail.yahoo@mail.yahoo.com"
type="cite">
<div style="color:#000; background-color:#fff;
font-family:HelveticaNeue, Helvetica Neue, Helvetica, Arial,
Lucida Grande, sans-serif;font-size:16px">
<div id="yiv4647819552">
<div id="yui_3_16_0_1_1443799821638_5267">
<div id="yui_3_16_0_1_1443799821638_5266"
style="color:#000;background-color:#fff;font-family:HelveticaNeue,
Helvetica Neue, Helvetica, Arial, Lucida Grande,
sans-serif;font-size:16px;">
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3475">4)
dynamically create new obj in subpatch<br clear="none">
</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3476">
<div dir="ltr">5) check if that new object's address
matches old object address</div>
</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3477">6) if
not, clear the subpatch</div>
<div dir="ltr"
id="yiv4647819552yui_3_16_0_1_1443799821638_3619">7)
repeat until you find a match</div>
<div id="yui_3_16_0_1_1443799821638_5412" dir="ltr"><br
clear="none">
</div>
<div id="yui_3_16_0_1_1443799821638_5355" dir="ltr">-Jonathan<br
clear="none">
</div>
<div id="yui_3_16_0_1_1443799821638_5356" dir="ltr"><br
clear="none">
</div>
<div id="yiv4647819552yui_3_16_0_1_1443799821638_2627"><span></span></div>
<br clear="none">
<div class="yiv4647819552qtdSeparateBR"><br clear="none">
<br clear="none">
</div>
</div>
</div>
</div>
<div class=".yiv4647819552yahoo_quoted">
<div style="font-family:HelveticaNeue, Helvetica Neue,
Helvetica, Arial, Lucida Grande, sans-serif;font-size:16px;">
<div style="font-family:HelveticaNeue, Helvetica Neue,
Helvetica, Arial, Lucida Grande,
sans-serif;font-size:16px;">
<div dir="ltr"> <font size="2" face="Arial"> On Friday,
October 2, 2015 1:05 AM, Matt Barber
<a class="moz-txt-link-rfc2396E" href="mailto:brbrofsvl@gmail.com"><brbrofsvl@gmail.com></a> wrote:<br clear="none">
</font> </div>
<br clear="none">
<br clear="none">
<div class="yiv4647819552y_msg_container">
<div id="yiv4647819552">
<div>
<div dir="ltr">
<div class="yiv4647819552gmail_default"
style="font-family:verdana, sans-serif;">Most of
the docs also don't expect you run a pointer out
of the bounds of an array, either, but the
compiler trusts you know what you're doing.</div>
<div class="yiv4647819552gmail_default"
style="font-family:verdana, sans-serif;"><br
clear="none">
</div>
<div class="yiv4647819552gmail_default"
style="font-family:verdana, sans-serif;">I see
what you mean in the first question. Can we make
a patch to test it dynamically?</div>
</div>
<div class="yiv4647819552yqt3762535804"
id="yiv4647819552yqt68615">
<div class="yiv4647819552gmail_extra"><br
clear="none">
<div class="yiv4647819552gmail_quote">On Fri,
Oct 2, 2015 at 12:36 AM, Jonathan Wilkes <span
dir="ltr"><<a moz-do-not-send="true"
rel="nofollow" shape="rect"
ymailto="mailto:jancsika@yahoo.com"
target="_blank"
href="mailto:jancsika@yahoo.com">jancsika@yahoo.com</a>></span>
wrote:<br clear="none">
<blockquote class="yiv4647819552gmail_quote"
style="margin:0 0 0 .8ex;border-left:1px
#ccc solid;padding-left:1ex;">
<div>
<div
style="color:#000;background-color:#fff;font-family:HelveticaNeue,
Helvetica Neue, Helvetica, Arial, Lucida
Grande, sans-serif;font-size:16px;">
<div>For the first question, here's what
I'm thinking:</div>
<div>1) create [boat(---[float]</div>
<div dir="ltr">2) click [boat(</div>
<div dir="ltr">3) error associated with
[float]. (string ".x1234567"
associated with [float] gets saved in
Pd window of GUI)</div>
<div dir="ltr">4) delete [float]</div>
<div dir="ltr">5) create [clip]</div>
<div dir="ltr">6) somehow the OS happens
to use addy "1234567" for [clip]<br
clear="none">
</div>
<div dir="ltr">7) click the error in the
Pd window<br clear="none">
</div>
<div><span>8) GUI sends "pd findinstance
.x1234567" to Pd</span></div>
<div><span>9) Pd assigns "1234567" to
error_object</span></div>
<div><span>10) Pd compares [clip]
object's "1234567" to old [float]
addy "1234567"</span></div>
<div><span>11) It's a match!</span></div>
<div dir="ltr"><span>12) [clip] is
falsely accused</span></div>
<div dir="ltr"><br clear="none">
<span></span></div>
<div dir="ltr"><span>For #2-- I guess
I'm just anxious since most of the
docs I've read assume</span></div>
<div dir="ltr"><span>a void* is either
NULL or pointing to something that
exists.</span></div>
<span class="yiv4647819552HOEnZb"></span>
<div dir="ltr"><br clear="none">
<span></span></div>
<div dir="ltr"><span>-Jonathan<br
clear="none">
</span></div>
<div>
<div class="yiv4647819552h5"><br
clear="none">
<div><br clear="none">
<br clear="none">
</div>
<div style="display:block;">
<div
style="font-family:HelveticaNeue,
Helvetica Neue, Helvetica,
Arial, Lucida Grande,
sans-serif;font-size:16px;">
<div
style="font-family:HelveticaNeue,
Helvetica Neue, Helvetica,
Arial, Lucida Grande,
sans-serif;font-size:16px;">
<div dir="ltr"> <font
size="2" face="Arial"> On
Friday, October 2, 2015
12:15 AM, Matt Barber <<a
moz-do-not-send="true"
rel="nofollow"
shape="rect"
ymailto="mailto:brbrofsvl@gmail.com"
target="_blank"
href="mailto:brbrofsvl@gmail.com"><a class="moz-txt-link-abbreviated" href="mailto:brbrofsvl@gmail.com">brbrofsvl@gmail.com</a></a>>
wrote:<br clear="none">
</font> </div>
<br clear="none">
<br clear="none">
<div>
<div>
<div>
<div dir="ltr">
<div
style="font-family:verdana,
sans-serif;">So, if
you deleted [float]
and created [clip],
isn't it going to
bash whatever c
string was
associated with
[float] and
associate it with
[clip]? Moreover,
that kind of error
has to occur in an
object that exists
in the current state
(I think?), so the
old [float] (once
it's gone) could
never be part of an
error in the first
place.</div>
<div
style="font-family:verdana,
sans-serif;"><br
clear="none">
</div>
<div
style="font-family:verdana,
sans-serif;">For 2)
I think it depends
on what you're going
to do with the void
pointer(s). Your
compare_pointers()
function could
actually be read as
the meat of a "guess
my address!"
roulette game. If
you decided to write
to *bar in case it
matched, it might be
a "guess my
address!" Russian
roulette game. I'm
not sure what the
compiler would say
about that since I
think you'd have to
cast *bar back to
something you could
write.</div>
<div
style="font-family:verdana,
sans-serif;"><br
clear="none">
</div>
<div
style="font-family:verdana,
sans-serif;"><br
clear="none">
</div>
<div>
<div><br
clear="none">
<div>On Thu, Oct
1, 2015 at 11:57
PM, Jonathan
Wilkes <span
dir="ltr"><<a
moz-do-not-send="true" rel="nofollow" shape="rect"
ymailto="mailto:jancsika@yahoo.com"
target="_blank" href="mailto:jancsika@yahoo.com"><a class="moz-txt-link-abbreviated" href="mailto:jancsika@yahoo.com">jancsika@yahoo.com</a></a>></span>
wrote:<br
clear="none">
<blockquote
style="margin:0px
0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex;">
<div>
<div
style="color:rgb(0,0,0);font-family:HelveticaNeue,
'Helvetica
Neue',
Helvetica,
Arial, 'Lucida
Grande',
sans-serif;font-size:16px;background-color:rgb(255,255,255);">
<div>Well, two
questions I
guess:</div>
<div dir="ltr">1)
false
positives-- if
I deleted
[float] and
create [clip],
can't malloc
use the addy</div>
<div dir="ltr">that
belonged to
[float]? In
that case
[clip] could
get associated
with an error</div>
<div dir="ltr">it
had nothing to
do with.</div>
<div dir="ltr">2)
Is it
undefined
behavior to
check void*
garbage for
equality?<br
clear="none">
</div>
<div dir="ltr">And
just for the
heck of it...</div>
<div dir="ltr">3)
is there a way
to create
something like
[readpd~]
which would
take indices</div>
<div dir="ltr">as
input and
output the
corresponding
bytes of the
running Pd
instance? :)</div>
<span></span>
<div dir="ltr"><br
clear="none">
</div>
<div dir="ltr">-Jonathan<br
clear="none">
</div>
<div>
<div>
<div dir="ltr"><br
clear="none">
</div>
<div dir="ltr"><br
clear="none">
<span></span></div>
<div dir="ltr"><span></span></div>
<br
clear="none">
<div><br
clear="none">
<br
clear="none">
</div>
<div
style="display:block;">
<div
style="font-family:HelveticaNeue,
'Helvetica
Neue',
Helvetica,
Arial, 'Lucida
Grande',
sans-serif;font-size:16px;">
<div
style="font-family:HelveticaNeue,
'Helvetica
Neue',
Helvetica,
Arial, 'Lucida
Grande',
sans-serif;font-size:16px;">
<div dir="ltr">
<font size="2"
face="Arial">
On Thursday,
October 1,
2015 11:22 PM,
Matt Barber
<<a
moz-do-not-send="true"
rel="nofollow"
shape="rect"
ymailto="mailto:brbrofsvl@gmail.com"
target="_blank" href="mailto:brbrofsvl@gmail.com"><a class="moz-txt-link-abbreviated" href="mailto:brbrofsvl@gmail.com">brbrofsvl@gmail.com</a></a>>
wrote:<br
clear="none">
</font> </div>
<br
clear="none">
<br
clear="none">
<div>
<div>
<div>
<div dir="ltr">
<div
style="font-family:verdana,
sans-serif;">The
left side is
still
determined by
the current
state of the
patch, though
-- it's only
going to check
objects that
are still
there, which
any garbage on
the right
won't ever
match
(right?). If
there is a
match, it's
going to be
because the
state on both
sides of the
== was updated
when the
object was
created. We
never really
have to worry
about false
positives, so
I'm not sure
the random
long is the
same
situation.</div>
</div>
<div>
<div><br
clear="none">
<div>On Thu,
Oct 1, 2015 at
9:54 PM,
Jonathan
Wilkes <span
dir="ltr"><<a
moz-do-not-send="true" rel="nofollow" shape="rect"
ymailto="mailto:jancsika@yahoo.com"
target="_blank" href="mailto:jancsika@yahoo.com"><a class="moz-txt-link-abbreviated" href="mailto:jancsika@yahoo.com">jancsika@yahoo.com</a></a>></span>
wrote:<br
clear="none">
<blockquote
style="margin:0px
0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex;">
<div>
<div
style="color:rgb(0,0,0);font-family:HelveticaNeue,
'Helvetica
Neue',
Helvetica,
Arial, 'Lucida
Grande',
sans-serif;font-size:16px;background-color:rgb(255,255,255);">
<div>But if
you trace
error_object
back, you'll
see it gets
created from
an sscanf</div>
<div dir="ltr">of
a c string.
And that
string was
stored in the
tcl/tk "text"
widget as
state bound</div>
<div dir="ltr">to
a
<ctrl-click>
proc (or in
post-1980s
version of Pd
that I work
on, a</div>
<div dir="ltr">"hyperlink").</div>
<div dir="ltr"><br
clear="none">
</div>
<div dir="ltr">That
state can
persist well
past the life
of the object
it referred
to. For
example,</div>
<div dir="ltr">the
error_object
could have
been deleted
by the user.</div>
<div dir="ltr"><br
clear="none">
</div>
<div dir="ltr">That's
why I was
generating a
random long in
my contrived
example. If
we<br
clear="none">
</div>
<div dir="ltr">cast
garbage to
void* and put
it to the
right of the
equals sign,
isn't libc</div>
<div dir="ltr">technically
allowed to
respond by
serving Pd
users a
listicle of
the top 10 C</div>
<div dir="ltr">programming
references
available from
Amazon with
free shipping?<span><font
color="#888888"><br clear="none">
</font></span></div>
<span></span>
<div dir="ltr"><br
clear="none">
</div>
<div dir="ltr">-Jonathan<br
clear="none">
</div>
<div>
<div>
<div><span></span></div>
<br
clear="none">
<div><br
clear="none">
<br
clear="none">
</div>
<div
style="display:block;">
<div
style="font-family:HelveticaNeue,
'Helvetica
Neue',
Helvetica,
Arial, 'Lucida
Grande',
sans-serif;font-size:16px;">
<div
style="font-family:HelveticaNeue,
'Helvetica
Neue',
Helvetica,
Arial, 'Lucida
Grande',
sans-serif;font-size:16px;">
<div dir="ltr">
<font size="2"
face="Arial">
On Thursday,
October 1,
2015 7:32 PM,
Matt Barber
<<a
moz-do-not-send="true"
rel="nofollow"
shape="rect"
ymailto="mailto:brbrofsvl@gmail.com"
target="_blank" href="mailto:brbrofsvl@gmail.com"><a class="moz-txt-link-abbreviated" href="mailto:brbrofsvl@gmail.com">brbrofsvl@gmail.com</a></a>>
wrote:<br
clear="none">
</font> </div>
<br
clear="none">
<br
clear="none">
<div>
<div>
<div>
<div dir="ltr">
<div
style="font-family:verdana,
sans-serif;">As
I understand
it, you can
compare void
pointers
because they
just store
addresses.</div>
<div
style="font-family:verdana,
sans-serif;"><br
clear="none">
</div>
<div
style="font-family:verdana,
sans-serif;">In
g_editor.c:</div>
<div
style="font-family:verdana,
sans-serif;"><br
clear="none">
</div>
<div>
<div><font
face="verdana,
sans-serif"><br
clear="none">
</font></div>
<div><font
face="verdana,
sans-serif">static
int
glist_dofinderror(t_glist
*gl, void
*error_object)</font></div>
<div><font
face="verdana,
sans-serif">{</font></div>
<div><font
face="verdana,
sans-serif">
t_gobj *g;</font></div>
<div><font
face="verdana,
sans-serif">
for (g =
gl->gl_list;
g; g =
g->g_next)</font></div>
<div><font
face="verdana,
sans-serif">
{</font></div>
<div><font
face="verdana,
sans-serif">
if
((void *)g ==
error_object)</font></div>
<div><font
face="verdana,
sans-serif">
{</font></div>
<div><font
face="verdana,
sans-serif">
/*
got it... now
show it. */</font></div>
<div><font
face="verdana,
sans-serif">
glist_noselect(gl);</font></div>
<div><font
face="verdana,
sans-serif">
canvas_vis(glist_getcanvas(gl),
1);</font></div>
<div><font
face="verdana,
sans-serif">
canvas_editmode(glist_getcanvas(gl),
1.);</font></div>
<div><font
face="verdana,
sans-serif">
glist_select(gl,
g);</font></div>
<div><font
face="verdana,
sans-serif">
return (1);</font></div>
<div><font
face="verdana,
sans-serif">
}</font></div>
<div><font
face="verdana,
sans-serif">
else if
(g->g_pd ==
canvas_class)</font></div>
<div><font
face="verdana,
sans-serif">
{</font></div>
<div><font
face="verdana,
sans-serif">
if
(glist_dofinderror((t_canvas
*)g,
error_object))</font></div>
<div><font
face="verdana,
sans-serif">
return (1);</font></div>
<div><font
face="verdana,
sans-serif">
}</font></div>
<div><font
face="verdana,
sans-serif">
}</font></div>
<div><font
face="verdana,
sans-serif">
return (0);</font></div>
<div><font
face="verdana,
sans-serif">}</font></div>
<div><font
face="verdana,
sans-serif"><br
clear="none">
</font></div>
<div><font
face="verdana,
sans-serif"><br
clear="none">
</font></div>
<div><font
face="verdana,
sans-serif">this
function takes
a pointer to
void (storing
the address of
an object) as
its second
argument void
*error_object.
It can't know
what the type
of that object
is, because
it's being
called from
somewhere
else, and it
could be any
kind of Pd
object. That
somewhere else
knows what
kind of object
it is and
(more
importantly)
where that
object's
address is,
and just
passes that
address in.
Then t_gobj
*g; traverses
the canvas,
and since the
address of
each object is
known, each of
those can be
compared to
the object
address passed
in until
there's a
match. This is
kind of a way
of getting
around the
usual strong
typing in c;
as long as we
know from both
ends of the
transaction
that we can
get valid
addresses of
what we're
interested in,
there's no
problem just
comparing
those
addresses to
see if we've
found the same
object.</font></div>
<div><font
face="verdana,
sans-serif"><br
clear="none">
</font></div>
<div><font
face="verdana,
sans-serif"><br
clear="none">
</font></div>
</div>
</div>
<div><br
clear="none">
<div>On Thu,
Oct 1, 2015 at
4:45 PM,
Jonathan
Wilkes via
Pd-list <span
dir="ltr"><<a
moz-do-not-send="true" rel="nofollow" shape="rect"
ymailto="mailto:pd-list@lists.iem.at"
target="_blank" href="mailto:pd-list@lists.iem.at"><a class="moz-txt-link-abbreviated" href="mailto:pd-list@lists.iem.at">pd-list@lists.iem.at</a></a>></span>
wrote:<br
clear="none">
<blockquote
style="margin:0px
0px 0px
0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex;">
<div>
<div>
<div
style="color:rgb(0,0,0);font-family:HelveticaNeue,
'Helvetica
Neue',
Helvetica,
Arial, 'Lucida
Grande',
sans-serif;font-size:16px;background-color:rgb(255,255,255);">
<div>Hi list,</div>
<div><br
clear="none">
</div>
<div>int
compare_pointers(t_pd
*foo)</div>
<div>{</div>
<div dir="ltr">
long bar =
generate_random_long();</div>
<div dir="ltr">
return
(((void *)foo)
== ((void
*)bar));</div>
<div dir="ltr">}</div>
<div dir="ltr"><br
clear="none">
</div>
<div dir="ltr">(I
probably have
unnecessary
parens
there...)</div>
<div dir="ltr"><br
clear="none">
</div>
<div dir="ltr">Is
the check for
equality a
case of
undefined
behavior?</div>
<div dir="ltr"><br
clear="none">
</div>
<div dir="ltr">If
so, doesn't
glob_findinstance
of s_print.c
also lead to
the same</div>
<div dir="ltr">undefined
behavior?</div>
<span></span>
<div dir="ltr"><br
clear="none">
</div>
<div dir="ltr">-Jonathan</div>
<div dir="ltr"> </div>
</div>
</div>
</div>
<br
clear="none">
_______________________________________________<br clear="none">
<a
moz-do-not-send="true"
rel="nofollow"
shape="rect"
ymailto="mailto:Pd-list@lists.iem.at"
target="_blank" href="mailto:Pd-list@lists.iem.at"><a class="moz-txt-link-abbreviated" href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a></a>
mailing list<br
clear="none">
UNSUBSCRIBE
and
account-management
-> <a
moz-do-not-send="true"
rel="nofollow"
shape="rect"
target="_blank"
href="http://lists.puredata.info/listinfo/pd-list"><a class="moz-txt-link-freetext" href="http://lists.puredata.info/listinfo/pd-list">http://lists.puredata.info/listinfo/pd-list</a></a><br
clear="none">
<br
clear="none">
</blockquote>
</div>
<br
clear="none">
</div>
</div>
</div>
<br
clear="none">
<br
clear="none">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br
clear="none">
</div>
</div>
</div>
</div>
<br
clear="none">
<br
clear="none">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br clear="none">
</div>
</div>
</div>
</div>
</div>
<br clear="none">
<br clear="none">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br clear="none">
</div>
</div>
</div>
</div>
<br clear="none">
<br clear="none">
</div>
</div>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
<a class="moz-txt-link-abbreviated" href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list
UNSUBSCRIBE and account-management -> <a class="moz-txt-link-freetext" href="http://lists.puredata.info/listinfo/pd-list">http://lists.puredata.info/listinfo/pd-list</a>
</pre>
</blockquote>
<br>
</body>
</html>