[PD-dev] [ pure-data-Bugs-2957058 ] pointer to [route symbol]-[print] crashes pd

SourceForge.net noreply at sourceforge.net
Mon Mar 1 04:11:36 CET 2010


Bugs item #2957058, was opened at 2010-02-23 01:11
Message generated for change (Comment added) made by jancsika1
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=478070&aid=2957058&group_id=55736

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: None
Group: None
Status: Open
Resolution: None
Priority: 7
Private: No
Submitted By: Jonathan Wilkes (jancsika1)
Assigned to: Nobody/Anonymous (nobody)
Summary: pointer to [route symbol]-[print] crashes pd

Initial Comment:
[namecanvas foo]

[traverse foo, bang(
|
[pointer]
|
[route symbol]
|
[print]

1) a pointer message is erroneously routed as a symbol
2) this crashes Pd
3) [route pointer] doesn't route a pointer

----------------------------------------------------------------------

>Comment By: Jonathan Wilkes (jancsika1)
Date: 2010-02-28 22:11

Message:
(pointer) with the g missing is what is specified in m_atom.c for
displaying a pointer atom.  So I assume there's a difference between a
pointer message and a pointer atom.

There are two reasons to [route] pointer messages.

1) Didactic-- [route] is a common object people use to learn about the
behavior of messages in Pd.   It would be nice to show all the predefined
message types going to different outlets, which can't currently happen
because [route] doesn't differentiate between pointers and anythings.

2) Because anythings and pointers aren't differentiated, this diminishes
the flexibility of an abstraction inlet.  So a data-structure related
abstraction that wants to take "set," "flush", "clear", and pointer
messages to the left inlet and do something else with the right inlet has
to add an additional inlet.  The [pointer] object can differentiate between
a pointer and "rewind," for example.  An abstraction should be able to have
the same flexibility.



----------------------------------------------------------------------

Comment By: Frank Barknecht (fbar)
Date: 2010-02-25 11:37

Message:
Yep, a gpointer is not simply a message composed of "pointer" and some
actual pointer blob. I don't know the exact details myself and don't really
understand the source code, but they seem to be something very "special"
just like signals are. As you know, [print] shows them as a not very
helpful "(gpointer)", but if you pass a pointer to [list prepend set]-[list
trim] and into a message box: There pointers show up as "(pointer)" with
the "g" missing.  Anyway don't bother  trying [route (pointer)], it doesn't
work either. :)

In the end we probably have to accept that gpointers don't have a
"printable" selector, just like audio signals don't have one. Introducing a
print- and routable selector as "pointer" may be useful, or maybe it's not,
as some people may already use "pointer" as a meta-message in their
patches, for example to handle mouse-"pointer" events or so. 

----------------------------------------------------------------------

Comment By: Jonathan Wilkes (jancsika1)
Date: 2010-02-25 00:54

Message:
Hm, I'm just not understanding something about gpointers-- I'd just assumed
when you send a pointer message it consists of the selector "pointer"
followed by the gpointer itself (gridflow's [display] seems to confirm
this).  But clearly something else is going on because [route pointer]
doesn't currently work for gpointers, nor will [pointer] accept a gpointer
that has passed through [pointer $1( (though [route] will, without
crashing, and output a usable gpointer that has the selector "list").

It also seems like "pointer 1 2 3" is an unchecked case of "bad arguments
to message 'pointer'".  So I guess I'm saying I agree that [route pointer]
should route according to the selector "pointer", I just don't understand
why a gpointer wouldn't match under those conditions.

----------------------------------------------------------------------

Comment By: Frank Barknecht (fbar)
Date: 2010-02-23 03:40

Message:
Hi Jonathan,

I raised the priority as crashes are really serious. I disagree with your
item 3), though. [route pointer] should not route GPointers, but
meta-messages starting with the symbol "pointer" e.g. 

[pointer 1 2 3(
|
[route pointer]
|

It does that just fine. 

----------------------------------------------------------------------

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=478070&aid=2957058&group_id=55736




More information about the Pd-dev mailing list