fix recent session loading.
std::stringstream::operator<< calls strlen(), but the string in the temp buffer may not [yet] be NULL terminated.
This commit is contained in:
parent
b7fbd4e9c0
commit
8d54a2472d
@ -61,27 +61,22 @@ ARDOUR::read_recent_sessions (RecentSessions& rs)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Read the file into a std::string;
|
||||
// Read the file into a std::string
|
||||
std::stringstream recent;
|
||||
char temporaryBuffer[1024];
|
||||
while (!feof(fin))
|
||||
{
|
||||
size_t charsRead = fread(&temporaryBuffer[0], sizeof(char), 1024, fin);
|
||||
if (charsRead != 1024 && ferror(fin))
|
||||
{
|
||||
while (!feof (fin)) {
|
||||
char buf[1024];
|
||||
size_t charsRead = fread (buf, sizeof(char), 1024, fin);
|
||||
if (ferror (fin)) {
|
||||
error << string_compose (_("Error reading recent session file %1 (%2)"), path, strerror (errno)) << endmsg;
|
||||
fclose(fin);
|
||||
return -1;
|
||||
}
|
||||
recent << &temporaryBuffer[0];
|
||||
if (charsRead == 0) {
|
||||
break;
|
||||
}
|
||||
recent.write (buf, charsRead);
|
||||
}
|
||||
|
||||
|
||||
|
||||
//ifstream recent (fin);
|
||||
|
||||
while (true) {
|
||||
|
||||
pair<string,string> newpair;
|
||||
|
Loading…
Reference in New Issue
Block a user