From abff241597db0752b8afab45dd25285f57d5395e Mon Sep 17 00:00:00 2001 From: Halogen Truong Date: Sat, 1 Feb 2025 13:59:12 +1100 Subject: [PATCH 1/2] Return NULL IIR filter when filter design fails during prototype creation --- src/filter/src/iirfilt.proto.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/filter/src/iirfilt.proto.c b/src/filter/src/iirfilt.proto.c index 3411a1f94..8651dba3e 100644 --- a/src/filter/src/iirfilt.proto.c +++ b/src/filter/src/iirfilt.proto.c @@ -238,7 +238,9 @@ IIRFILT() IIRFILT(_create_prototype)(liquid_iirdes_filtertype _ftype, float A[h_len]; // design filter (compute coefficients) - liquid_iirdes(_ftype, _btype, _format, _order, _fc, _f0, _ap, _as, B, A); + int err = liquid_iirdes(_ftype, _btype, _format, _order, _fc, _f0, _ap, _as, B, A); + if (err != LIQUID_OK) + return NULL; // move coefficients to type-specific arrays (e.g. float complex) TC Bc[h_len]; From 5731b10d5879347abaf54feb04940c67ca0bc844 Mon Sep 17 00:00:00 2001 From: "Joseph D. Gaeddert" Date: Sat, 1 Feb 2025 16:40:48 -0500 Subject: [PATCH 2/2] iirfilt: using proper error handling when filter design fails --- src/filter/src/iirfilt.proto.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/filter/src/iirfilt.proto.c b/src/filter/src/iirfilt.proto.c index 8651dba3e..dc3b6f71b 100644 --- a/src/filter/src/iirfilt.proto.c +++ b/src/filter/src/iirfilt.proto.c @@ -238,9 +238,8 @@ IIRFILT() IIRFILT(_create_prototype)(liquid_iirdes_filtertype _ftype, float A[h_len]; // design filter (compute coefficients) - int err = liquid_iirdes(_ftype, _btype, _format, _order, _fc, _f0, _ap, _as, B, A); - if (err != LIQUID_OK) - return NULL; + if (liquid_iirdes(_ftype, _btype, _format, _order, _fc, _f0, _ap, _as, B, A) != LIQUID_OK) + return liquid_error_config("iirfilt_%s_create_prototype(), could not design filter", EXTENSION_FULL); // move coefficients to type-specific arrays (e.g. float complex) TC Bc[h_len];