Tracker: check result of FlattenedSize() for error

This commit is contained in:
Philippe Saint-Pierre
2015-07-03 14:48:40 -04:00
parent a495c5e69a
commit 189c10b089
+8 -6
View File
@@ -428,12 +428,14 @@ TTracker::QuitRequested()
if (!BootedInSafeMode() && FSGetDeskDir(&deskDir) == B_OK) { if (!BootedInSafeMode() && FSGetDeskDir(&deskDir) == B_OK) {
// if message is empty, delete the corresponding attribute // if message is empty, delete the corresponding attribute
if (message.CountNames(B_ANY_TYPE)) { if (message.CountNames(B_ANY_TYPE)) {
size_t size = (size_t)message.FlattenedSize(); ssize_t size = message.FlattenedSize();
char* buffer = new char[size]; if (size > B_OK) {
message.Flatten(buffer, (ssize_t)size); char* buffer = new char[size];
deskDir.WriteAttr(kAttrOpenWindows, B_MESSAGE_TYPE, 0, buffer, message.Flatten(buffer, size);
size); deskDir.WriteAttr(kAttrOpenWindows, B_MESSAGE_TYPE, 0, buffer,
delete[] buffer; size);
delete[] buffer;
}
} else } else
deskDir.RemoveAttr(kAttrOpenWindows); deskDir.RemoveAttr(kAttrOpenWindows);
} }