diff --git a/daemon/src/audio/sound/audiofile.cpp b/daemon/src/audio/sound/audiofile.cpp
index bafc2012b5d4e1196f04551bbb9f09e70cb66495..4325de6bf598331a2a06136d96c1122bf8307d4a 100644
--- a/daemon/src/audio/sound/audiofile.cpp
+++ b/daemon/src/audio/sound/audiofile.cpp
@@ -34,7 +34,8 @@
 #include <math.h>
 #include <samplerate.h>
 #include <cstring>
-#include <limits.h>
+#include <vector>
+#include <climits>
 
 #include "audiofile.h"
 #include "audio/codecs/audiocodecfactory.h"
@@ -62,8 +63,8 @@ RawFile::RawFile(const std::string& name, sfl::AudioCodec* codec, unsigned int s
     size_t length = file.tellg();
     file.seekg(0, std::ios::beg);
 
-    char *fileBuffer = new char[length];
-    file.read(fileBuffer,length);
+    std::vector<char> fileBuffer(length);
+    file.read(&fileBuffer[0], length);
     file.close();
 
     const unsigned int frameSize = audioCodec_->getFrameSize();
@@ -74,7 +75,7 @@ RawFile::RawFile(const std::string& name, sfl::AudioCodec* codec, unsigned int s
 
     SFLDataFormat *monoBuffer = new SFLDataFormat[decodedSize];
     SFLDataFormat *bufpos = monoBuffer;
-    unsigned char *filepos = reinterpret_cast<unsigned char *>(fileBuffer);
+    unsigned char *filepos = reinterpret_cast<unsigned char *>(&fileBuffer[0]);
     size_ = decodedSize;
 
     while (length >= encFrameSize) {
@@ -83,8 +84,6 @@ RawFile::RawFile(const std::string& name, sfl::AudioCodec* codec, unsigned int s
         length -= encFrameSize;
     }
 
-    delete [] fileBuffer;
-
     if (sampleRate == audioRate)
         buffer_ = monoBuffer;
     else {