diff --git a/src/audio/pulselayer.cpp b/src/audio/pulselayer.cpp
index a2da80d467f095d9cfbd318e81349f05292ab8a2..c078f25c2d9421d6413ea3906a5c2b17bab2875c 100644
--- a/src/audio/pulselayer.cpp
+++ b/src/audio/pulselayer.cpp
@@ -325,15 +325,17 @@ void PulseLayer::writeToSpeaker( void )
       normalAvail = _mainSndRingBuffer.AvailForGet();
       toGet = (normalAvail < (int)(framesPerBuffer * sizeof(SFLDataFormat))) ? normalAvail : framesPerBuffer * sizeof(SFLDataFormat);
       if (toGet) {
-	_mainSndRingBuffer.Get(out, toGet, 100);
-	_mainSndRingBuffer.Discard(toGet);
+	    _mainSndRingBuffer.Get(out, toGet, 100);
+	    _mainSndRingBuffer.Discard(toGet);
       } 
       else {
-	  bzero(out, framesPerBuffer * sizeof(SFLDataFormat));
+	    bzero(out, framesPerBuffer * sizeof(SFLDataFormat));
       }
       pa_stream_write( playback->pulseStream() , out , toGet  , pa_xfree, 0 , PA_SEEK_RELATIVE);
     }
   }
+
+  if(out)   pa_xfree(out);
 }
  
 void PulseLayer::readFromMic( void )