hi thomas...
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?
cheers...
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; }