diff --git a/daemon/src/audio/pulseaudio/pulselayer.cpp b/daemon/src/audio/pulseaudio/pulselayer.cpp
index 26f59c0b159e1546a90d43f883854f5f1142d6c7..3f8e07cf84c6b9b3b47223b474857fac8c8e638d 100644
--- a/daemon/src/audio/pulseaudio/pulselayer.cpp
+++ b/daemon/src/audio/pulseaudio/pulselayer.cpp
@@ -509,8 +509,8 @@ void PulseLayer::readFromMic()
     const char *data = NULL;
     size_t bytes;
 
-    size_t sample_size = record_->sampleSize();
-    uint8_t channels = record_->channels();
+    const size_t sample_size = record_->sampleSize();
+    const uint8_t channels = record_->channels();
 
     if (pa_stream_peek(record_->pulseStream() , (const void**) &data , &bytes) < 0 or !data)
         return;
@@ -519,7 +519,9 @@ void PulseLayer::readFromMic()
     outfile.write((const char *)data, bytes);
 #endif
 
-    size_t samples = bytes / sample_size;
+    assert(channels);
+    assert(sample_size);
+    const size_t samples = bytes / sample_size / channels;
 
     AudioBuffer in(samples, channels, sampleRate_);
     in.deinterleave((SFLAudioSample*)data, samples, channels);