diff options
author | Hans-Christoph Steiner <eighthave@users.sourceforge.net> | 2012-09-20 21:02:43 +0000 |
---|---|---|
committer | Hans-Christoph Steiner <eighthave@users.sourceforge.net> | 2012-09-20 21:02:43 +0000 |
commit | 9b8ab99648518dc38fce2b85658a6217aa886bb0 (patch) | |
tree | 3c57c3ff1f461d2d4e3b187851532e5c5994c36d /average.c | |
parent | 2e7fa0948fba414122ecb3cef90f4a7b024450c5 (diff) |
make sure argument respects limit on number of floats to average, fixes #3552251
svn path=/trunk/externals/markex/; revision=16258
Diffstat (limited to 'average.c')
-rw-r--r-- | average.c | 13 |
1 files changed, 10 insertions, 3 deletions
@@ -11,12 +11,14 @@ /* instance structure */ static t_class *average_class; +#define MAX_NUMBERS 100 + typedef struct _average { t_object x_obj; /* obligatory object header */ int a_total; /* number of numbers to average */ int a_whichNum; /* which number are pointing at */ - float a_numbers[100]; /* numbers to average, 100 maximum */ + float a_numbers[MAX_NUMBERS]; /* numbers to average */ t_outlet *t_out1; /* the outlet */ } t_average; @@ -47,13 +49,13 @@ void average_total(t_average *x, t_floatarg n) void average_reset(t_average *x, t_floatarg newVal) { int n; - for (n=0; n < 100; n ++) x->a_numbers[n] = newVal; + for (n=0; n < MAX_NUMBERS; n ++) x->a_numbers[n] = newVal; } void average_clear(t_average *x) { int n; - for ( n = 0; n < 100; n ++) x->a_numbers[n] = 0.0f; + for ( n = 0; n < MAX_NUMBERS; n ++) x->a_numbers[n] = 0.0f; } void *average_new(t_floatarg f) /* init vals in struc */ @@ -64,6 +66,11 @@ void *average_new(t_floatarg f) /* init vals in struc */ average_clear(x); if (f) x->a_total = (int)f; else x->a_total = 10; + if (x->a_total > MAX_NUMBERS) { + logpost(x, 2, "[average]: argument set max numbers greater than %i, setting to %i", + MAX_NUMBERS, MAX_NUMBERS); + x->a_total = MAX_NUMBERS; + } x->a_whichNum = 0; return (x); } |