d4aceb
diff --git a/src/ms_adpcm.c b/src/ms_adpcm.c
d4aceb
index 5e8f1a31..a21cb994 100644
d4aceb
--- a/src/ms_adpcm.c
d4aceb
+++ b/src/ms_adpcm.c
d4aceb
@@ -128,8 +128,14 @@ wavlike_msadpcm_init	(SF_PRIVATE *psf, int blockalign, int samplesperblock)
d4aceb
 	if (psf->file.mode == SFM_WRITE)
d4aceb
 		samplesperblock = 2 + 2 * (blockalign - 7 * psf->sf.channels) / psf->sf.channels ;
d4aceb
 
d4aceb
-	if (blockalign < 7 * psf->sf.channels)
d4aceb
-	{	psf_log_printf (psf, "*** Error blockalign (%d) should be > %d.\n", blockalign, 7 * psf->sf.channels) ;
d4aceb
+	/* There's 7 samples per channel in the preamble of each block */
d4aceb
+	if (samplesperblock < 7 * psf->sf.channels)
d4aceb
+	{	psf_log_printf (psf, "*** Error samplesperblock (%d) should be >= %d.\n", samplesperblock, 7 * psf->sf.channels) ;
d4aceb
+		return SFE_INTERNAL ;
d4aceb
+		} ;
d4aceb
+
d4aceb
+	if (2 * blockalign < samplesperblock * psf->sf.channels)
d4aceb
+	{	psf_log_printf (psf, "*** Error blockalign (%d) should be >= %d.\n", blockalign, samplesperblock * psf->sf.channels / 2) ;
d4aceb
 		return SFE_INTERNAL ;
d4aceb
 		} ;
d4aceb