Skip to content

Commit 16ff085

Browse files
author
Roberto De Ioris
committed
fixed user defined struct
1 parent 137b75f commit 16ff085

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

Source/UnrealEnginePython/Private/UEPyUScriptStruct.cpp

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,18 @@ PyObject *py_ue_new_uscriptstruct(UScriptStruct *u_struct, uint8 *data)
355355
return (PyObject *)ret;
356356
}
357357

358+
PyObject *py_ue_new_owned_uscriptstruct(UScriptStruct *u_struct, uint8 *data)
359+
{
360+
ue_PyUScriptStruct *ret = (ue_PyUScriptStruct *)PyObject_New(ue_PyUScriptStruct, &ue_PyUScriptStructType);
361+
ret->u_struct = u_struct;
362+
uint8 *struct_data = (uint8*)FMemory::Malloc(u_struct->GetStructureSize());
363+
ret->u_struct->InitializeStruct(struct_data);
364+
ret->u_struct->CopyScriptStruct(struct_data, data);
365+
ret->u_struct_ptr = struct_data;
366+
ret->u_struct_owned = 1;
367+
return (PyObject *)ret;
368+
}
369+
358370
static PyObject *py_ue_uscriptstruct_clone(ue_PyUScriptStruct *self, PyObject * args)
359371
{
360372
ue_PyUScriptStruct *ret = (ue_PyUScriptStruct *)PyObject_New(ue_PyUScriptStruct, &ue_PyUScriptStructType);

Source/UnrealEnginePython/Private/UEPyUScriptStruct.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ typedef struct
1313
} ue_PyUScriptStruct;
1414

1515
PyObject *py_ue_new_uscriptstruct(UScriptStruct *, uint8 *);
16+
PyObject *py_ue_new_owned_uscriptstruct(UScriptStruct *, uint8 *);
1617
ue_PyUScriptStruct *py_ue_is_uscriptstruct(PyObject *);
1718

1819
UProperty *ue_struct_get_field_from_name(UScriptStruct *, char *);

Source/UnrealEnginePython/Private/UObject/UEPyUserDefinedStruct.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ PyObject *py_ue_struct_add_variable(ue_PyUObject * self, PyObject * args)
3333

3434
FStructureEditorUtils::OnStructureChanged(u_struct, FStructureEditorUtils::EStructureEditorChangeInfo::AddedVariable);
3535

36-
return py_ue_new_uscriptstruct(FindObject<UScriptStruct>(ANY_PACKAGE, UTF8_TO_TCHAR((char *)"Guid")), (uint8 *)&var->VarGuid);
36+
return py_ue_new_owned_uscriptstruct(FindObject<UScriptStruct>(ANY_PACKAGE, UTF8_TO_TCHAR((char *)"Guid")), (uint8 *)&var->VarGuid);
3737
}
3838

3939
PyObject *py_ue_struct_get_variables(ue_PyUObject * self, PyObject * args)
@@ -50,7 +50,7 @@ PyObject *py_ue_struct_get_variables(ue_PyUObject * self, PyObject * args)
5050
PyObject *py_list = PyList_New(0);
5151
for (FStructVariableDescription description : variables)
5252
{
53-
PyList_Append(py_list, py_ue_new_uscriptstruct(FStructVariableDescription::StaticStruct(), (uint8*)&description));
53+
PyList_Append(py_list, py_ue_new_owned_uscriptstruct(FStructVariableDescription::StaticStruct(), (uint8*)&description));
5454
}
5555
return py_list;
5656
}

0 commit comments

Comments
 (0)