diff options
author | Johnathan Corgan <johnathan@corganlabs.com> | 2013-09-23 08:10:53 -0700 |
---|---|---|
committer | Johnathan Corgan <johnathan@corganlabs.com> | 2013-09-23 08:10:53 -0700 |
commit | 72e8181b60c3762c7edbeeb71dee062a77f90e59 (patch) | |
tree | d7c6a839ef09d49e7f0b67a8ba4af5f9fa895194 | |
parent | defd5707dbe0282a2c3f06bd90cd4e25d52bb3d8 (diff) | |
parent | e0fe4609d5cd07bd44552663515d044d8ca5be1b (diff) |
Merge branch 'maint'
-rw-r--r-- | gr-filter/lib/pm_remez.cc | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/gr-filter/lib/pm_remez.cc b/gr-filter/lib/pm_remez.cc index 24891f1795..c23095af25 100644 --- a/gr-filter/lib/pm_remez.cc +++ b/gr-filter/lib/pm_remez.cc @@ -376,8 +376,10 @@ namespace gr { if(((E[i] >= E[i-1]) && (E[i] > E[i+1]) && (E[i] > 0.0)) || ((E[i] <= E[i-1]) && (E[i] < E[i+1]) && (E[i] < 0.0))) { // PAK: we sometimes get too many extremal frequencies - if(k >= 2*r) + if(k >= 2*r) { + free(foundExt); return -3; + } foundExt[k++] = i; } } @@ -388,14 +390,18 @@ namespace gr { j = gridsize-1; if(((E[j] > 0.0) && (E[j] > E[j-1])) || ((E[j] < 0.0) && (E[j] < E[j-1]))) { - if(k >= 2*r) + if(k >= 2*r) { + free(foundExt); return -3; + } foundExt[k++] = j; } // PAK: we sometimes get not enough extremal frequencies - if(k < r+1) + if(k < r+1) { + free(foundExt); return -2; + } /* * Remove extra extremals @@ -688,8 +694,18 @@ namespace gr { calc_parms(r, Ext, Grid, D, W, ad, x, y); calc_error(r, ad, x, y, gridsize, Grid, D, W, E); int err = search(r, Ext, gridsize, E); - if(err) + if(err) { + free(Grid); + free(W); + free(D); + free(E); + free(Ext); + free(taps); + free(x); + free(y); + free(ad); return err; + } for(int i = 0; i <= r; i++) assert(Ext[i] < gridsize); if(is_done(r, Ext, E)) @@ -732,6 +748,7 @@ namespace gr { free(D); free(E); free(Ext); + free(taps); free(x); free(y); free(ad); |