Skip to content

Commit f5b8b72

Browse files
committed
fix: Crash under Wine when adding an new object
1 parent 938d822 commit f5b8b72

3 files changed

Lines changed: 12 additions & 4 deletions

File tree

3DRadSpace/3DRadSpace_Editor_WindowsDX11/Frontend/Windows/AddObjectDialog.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,8 +58,8 @@ INT_PTR WINAPI AddObjectDialog_DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA
5858
{
5959
auto& list = Engine3DRadSpace::Internal::GetInternalObjectsList();
6060
Logging::PrintMessage(std::format("AddObj: e3drsp_internal_objects_list 0x{:x}", reinterpret_cast<uintptr_t>(list.data())));
61-
auto obj = EditObject(hwnd, aod->hInstance, list[item->iItem], aod->_content);
62-
EndDialog(hwnd, reinterpret_cast<INT_PTR>(obj));
61+
aod->Result = EditObject(hwnd, aod->hInstance, list[item->iItem], aod->_content);
62+
EndDialog(hwnd, IDOK);
6363
}
6464
break;
6565
}
@@ -112,7 +112,8 @@ AddObjectDialog::AddObjectDialog(HWND owner_window, HINSTANCE instance, Content:
112112

113113
IObject* AddObjectDialog::ShowDialog()
114114
{
115-
return reinterpret_cast<IObject*>(Dialog::ShowDialog(static_cast<void *>(this)));
115+
auto r = Dialog::ShowDialog(static_cast<void *>(this));
116+
return r == IDOK ? static_cast<IObject*>(Result) : nullptr;
116117
}
117118

118119
struct objectItem

3DRadSpace/3DRadSpace_Editor_WindowsDX11/Frontend/Windows/AddObjectDialog.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class AddObjectDialog : public Dialog
2020
public:
2121
AddObjectDialog(HWND owner, HINSTANCE hInstance, Engine3DRadSpace::Content::ContentManager *content);
2222

23+
void* Result = nullptr;
24+
2325
[[nodiscard]] Engine3DRadSpace::Objects::IObject* ShowDialog();
2426

2527
friend INT_PTR WINAPI AddObjectDialog_DlgProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam);

3DRadSpace/Engine3DRadSpace_Tests/Main.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,10 +48,15 @@ int WinMain(
4848
(void)lpCmdLine;
4949
(void)nShowCmd;
5050

51-
Engine3DRadSpace::Plugins::LoadPlugin("Plugins\\3DRadSpace.Scripting.CSharp.dll");
51+
auto r = Engine3DRadSpace::Plugins::LoadPlugin("Plugins\\3DRadSpace.Scripting.CSharp.dll");
52+
if (!r.has_value())
53+
{
54+
return -1;
55+
}
5256

5357
MyGame game;
5458
game.Run();
59+
return 0;
5560
}
5661

5762
int main(int argc, char** argv) {

0 commit comments

Comments
 (0)