[bugs:#1145] inconsitent type of argc in A_GIMME-callback

Status: open
Group: v0.45
Labels: API devel
Created: Mon Jun 02, 2014 10:11 AM UTC by IOhannes m zmölnig
Last Updated: Mon Jun 02, 2014 10:11 AM UTC
Owner: Miller Puckette

recently, i received a bug-report for the "puredata" Debian-package,
that warned of conflicting declarations of the glist_scalar() function.

the problem seems to be, that glist_scalar() uses "int argc" for it's
A_GIMME argument in the declaration in g_canvas.c, but uses "t_int
argc" in the function definition in g_scalar.c.
now "t_int" is defined as a "pointer-sized integer", which is a "long
int" on amd64, thus incompatible with the 32bit "int".

it is often tempting to use "t_int" whenever possible, as it is the
Pd-native integer type.
unfortunately this can (and will) break binary compatibility in some
cases.

i think it should be well documented which types to use.
e.g. the only way to find out how to use A_GIMME is reading the source
code (where we have at least 4 occurences that use "t_int"
(glist_scalar(), curve_new(), plot_new() and drawnumber_new()) and a
lot more (>200) uses of "int".

also t_listmethod and t_anymethod in m_imp.h seem to suggest that
"int" is the correct type (though "m_imp.h" was historically
considered a "private" header, not meant for documentation).

i think it's necessary to fix all uses of "t_int argc" to "int argc".

additionally i think it would be good to:
- clearly document the function-signature for (A_GIMME) callbacks (and
while doing so, move the various callback-typedefs from m_imp.h to m_pd.h)

i'm attaching a patch that changes the use of t_int to int in A_GIMME callbacks.


Sent from sourceforge.net because pd-dev@lists.iem.at is subscribed to https://sourceforge.net/p/pure-data/bugs/

To unsubscribe from further messages, a project admin can change settings at https://sourceforge.net/p/pure-data/admin/bugs/options. Or, if this is a mailing list, you can unsubscribe from the mailing list.