[PD-dev] Re: [PD] please test: threaded soundfiler & garray locks
Thomas Grill
gr at grrrr.org
Thu Jun 17 20:10:56 CEST 2004
> > in g_array.c, line 928 the variable ret is defined after some
> > statements which is not conforming to standard c. My compiler hickups.
>
> hm ... both icc and gcc don't complain about this line ... i admit, i'm
> a bit confused ... what compiler are you using?
It's really not a problem, i would have checked in the version working for
all compilers if cvs was accessible.... please see the code below
In standard C (but maybe this is outdated) you have to declare all variables
before the forst statement in a function. gcc has some flags to enforce
strict syntax checking. I use MS Visual C .NET here.
best greetings,
Thomas
/* get any floating-point field of any element of an array */
float garray_get(t_garray *x, t_symbol *s, t_int indx)
{
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_lock(x);
#endif
t_template *template = garray_template(x);
int yonset, type;
t_symbol *arraytype;
float ret;
if (!template_find_field(template, gensym("y"), &yonset,
&type, &arraytype) || type != DT_FLOAT)
{
error("%s: needs floating-point '%s' field", x->x_templatesym->s_name,
s->s_name);
return (0);
}
if (indx < 0) indx = 0;
else if (indx >= x->x_n) indx = x->x_n - 1;
ret = (*(float *)((x->x_vec + sizeof(t_word) * indx) + yonset));
#ifdef GARRAY_THREAD_LOCK /* TB: array lock */
garray_unlock(x);
#endif
return ret;
}
More information about the Pd-dev
mailing list