diff --git a/Sources/PFFFTLib/pffft_priv_impl.h b/Sources/PFFFTLib/pffft_priv_impl.h index 7ac2b0a..e92fdc8 100644 --- a/Sources/PFFFTLib/pffft_priv_impl.h +++ b/Sources/PFFFTLib/pffft_priv_impl.h @@ -1061,12 +1061,14 @@ SETUP_STRUCT *FUNC_NEW_SETUP(int N, pffft_transform_t transform) { if (transform == PFFFT_REAL) { if ((N%(2*SIMD_SZ*SIMD_SZ)) || N<=0) return s; } if (transform == PFFFT_COMPLEX) { if ((N%( SIMD_SZ*SIMD_SZ)) || N<=0) return s; } s = (SETUP_STRUCT*)malloc(sizeof(SETUP_STRUCT)); + if (!s) return s; /* assert((N % 32) == 0); */ s->N = N; s->transform = transform; /* nb of complex simd vectors */ s->Ncvec = (transform == PFFFT_REAL ? N/2 : N)/SIMD_SZ; s->data = (v4sf*)FUNC_ALIGNED_MALLOC(2*s->Ncvec * sizeof(v4sf)); + if (!s->data) { free(s); return 0; } s->e = (float*)s->data; s->twiddle = (float*)(s->data + (2*s->Ncvec*(SIMD_SZ-1))/SIMD_SZ);