You say that the sound buffer is not updated, but you probably mean that the sound that uses the buffer is not updated, right? Does it work if you call sound.setBuffer again after reloading the buffer?
I've tried doing the setBuffer (although that shouldn't do anything I think, because an sf::Sound instance should only ever point to an sf::SoundBuffer object, not the raw sound samples themselves, no?). I also tried calling resetBuffer() before.
This is what I mean:
#include <SFML/Audio.hpp>
#include <SFML/System.hpp>
int main(int, char**)
{
sf::SoundBuffer buffer;
buffer.loadFromFile("sound1.ogg");
sf::Sound sound(buffer);
sound.play();
sf::sleep(sf::seconds(5));
buffer.loadFromFile("sound2.ogg");
sound.setBuffer(buffer);
sound.play();
sf::sleep(sf::seconds(5));
return 0;
}
"sound1.ogg" is played two times on my machine.
Currently I'm working around it by using an allocated sf::SoundBuffer object, which I delete and create again when another sound is to be loaded. I was writing a small and simple Qt app that plays back a user chosen sound on a certain action, so I tried to keep it as simple as possible and was hoping I could just load new samples into the buffer every time the user chose a new sound file.