Skip to content

Commit 907fdda

Browse files
committed
Haiku: Fix use-after-delete
The members of the strucs where used after the looper deleted itself (via PostMessage(B_QUIT_REQUESTED)), resuting in bad data. So we copy the struct instead of getting a reference, before deleting the looper.
1 parent 5a8b4c3 commit 907fdda

File tree

1 file changed

+3
-6
lines changed

1 file changed

+3
-6
lines changed

src/nfd_haiku.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -133,21 +133,18 @@ DialogHandler::MessageReceived(BMessage *msg)
133133
entry_ref ref;
134134
msg->FindRef("refs", i, mResponseData.open.refs + i);
135135
}
136-
PostMessage(B_QUIT_REQUESTED);
137136
break;
138137
}
139138

140139
case B_SAVE_REQUESTED: {
141140
mResponseId = kSaveResponse;
142141
msg->FindRef("directory", &mResponseData.save.directory);
143142
msg->FindString("name", &mResponseData.save.filename);
144-
PostMessage(B_QUIT_REQUESTED);
145143
break;
146144
}
147145

148146
case B_CANCEL: {
149147
mResponseId = kCancelResponse;
150-
PostMessage(B_QUIT_REQUESTED);
151148
break;
152149
}
153150

@@ -191,7 +188,7 @@ nfdresult_t NFD_OpenDialog( const nfdchar_t *filterList,
191188

192189
handler->Wait();
193190

194-
response_data &data = handler->ResponseData();
191+
response_data data = handler->ResponseData();
195192
int32 response = handler->ResponseId();
196193
handler->PostMessage(B_QUIT_REQUESTED);
197194

@@ -267,7 +264,7 @@ nfdresult_t NFD_OpenDialogMultiple( const nfdchar_t *filterList,
267264

268265
handler->Wait();
269266

270-
response_data &data = handler->ResponseData();
267+
response_data data = handler->ResponseData();
271268
int32 response = handler->ResponseId();
272269

273270
handler->PostMessage(B_QUIT_REQUESTED);
@@ -337,7 +334,7 @@ nfdresult_t NFD_SaveDialog( const nfdchar_t *filterList,
337334

338335
handler->Wait();
339336

340-
response_data &data = handler->ResponseData();
337+
response_data data = handler->ResponseData();
341338
int32 response = handler->ResponseId();
342339
handler->PostMessage(B_QUIT_REQUESTED);
343340

0 commit comments

Comments
 (0)