iir_filter_copy(): don't copy uninitialised state
If iir_filter_copy() was called on a filter which had no state, it would copy the uninitialised memory from that filter. Check for this.
This commit is contained in:
		
							parent
							
								
									9a87889dd3
								
							
						
					
					
						commit
						bc383a92da
					
				| 
						 | 
				
			
			@ -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);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue