diff --git a/src/libiir/200_iir.c b/src/libiir/200_iir.c index a730171..d311b67 100644 --- a/src/libiir/200_iir.c +++ b/src/libiir/200_iir.c @@ -149,7 +149,8 @@ iir_filter_chain(struct iir_filter_t* fi, const struct iir_coeff_t* coeff) /* iir_filter_copy() * Performs a deep copy of a filter instance chain. */ -struct iir_filter_t* iir_filter_copy(const struct iir_filter_t* fi, int state) +struct iir_filter_t* +iir_filter_copy(const struct iir_filter_t* fi, int state) { struct iir_filter_t* head = 0, * tail = 0, * copy; @@ -165,7 +166,7 @@ struct iir_filter_t* iir_filter_copy(const struct iir_filter_t* fi, int state) memcpy(copy->c, fi->c, sizeof(double) * fi->nc); memcpy(copy->d, fi->d, sizeof(double) * fi->nd); - if(state) { + if(state && fi->ready) { copy->ready = 1; memcpy(copy->x, fi->x, sizeof(double) * fi->nc); memcpy(copy->y, fi->y, sizeof(double) * fi->nd);