Skip to content

Commit ded06a1

Browse files
author
Roberto De Ioris
committed
improved IHttpRequest
1 parent 3300a06 commit ded06a1

File tree

3 files changed

+15
-4
lines changed

3 files changed

+15
-4
lines changed

Source/UnrealEnginePython/Private/UEPyIHttpBase.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -110,4 +110,4 @@ void ue_python_init_ihttp_base(PyObject *ue_module) {
110110

111111
Py_INCREF(&ue_PyIHttpBaseType);
112112
PyModule_AddObject(ue_module, "IHttpBase", (PyObject *)&ue_PyIHttpBaseType);
113-
}
113+
}

Source/UnrealEnginePython/Private/UEPyIHttpRequest.cpp

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,12 +191,20 @@ static PyObject *ue_PyIHttpRequest_str(ue_PyIHttpRequest *self)
191191
&self->http_request.Get());
192192
}
193193

194+
static void ue_PyIHttpRequest_dealloc(ue_PyIHttpRequest *self) {
195+
#if defined(UEPY_MEMORY_DEBUG)
196+
UE_LOG(LogPython, Warning, TEXT("Destroying ue_PyIHttpRequest %p mapped to IHttpRequest %p"), self, &self->http_request.Get());
197+
#endif
198+
Py_DECREF(self->py_dict);
199+
Py_TYPE(self)->tp_free((PyObject *)self);
200+
}
201+
194202
static PyTypeObject ue_PyIHttpRequestType = {
195203
PyVarObject_HEAD_INIT(NULL, 0)
196204
"unreal_engine.IHttpRequest", /* tp_name */
197205
sizeof(ue_PyIHttpRequest), /* tp_basicsize */
198206
0, /* tp_itemsize */
199-
0, /* tp_dealloc */
207+
(destructor)ue_PyIHttpRequest_dealloc, /* tp_dealloc */
200208
0, /* tp_print */
201209
0, /* tp_getattr */
202210
0, /* tp_setattr */
@@ -232,6 +240,7 @@ static int ue_py_ihttp_request_init(ue_PyIHttpRequest *self, PyObject *args, PyO
232240
}
233241

234242
self->http_request = FHttpModule::Get().CreateRequest();
243+
self->py_dict = PyDict_New();
235244
if (verb) {
236245
self->http_request->SetVerb(UTF8_TO_TCHAR(verb));
237246
}
@@ -252,11 +261,12 @@ void ue_python_init_ihttp_request(PyObject *ue_module) {
252261
ue_PyIHttpRequestType.tp_base = &ue_PyIHttpBaseType;
253262

254263
ue_PyIHttpRequestType.tp_getattro = PyObject_GenericGetAttr;
255-
ue_PyIHttpRequestType.tp_setattro = PyObject_GenericSetAttr;
264+
ue_PyIHttpRequestType.tp_setattro = PyObject_GenericSetAttr;
265+
ue_PyIHttpRequestType.tp_dictoffset = offsetof(ue_PyIHttpRequestType, py_dict);
256266

257267
if (PyType_Ready(&ue_PyIHttpRequestType) < 0)
258268
return;
259269

260270
Py_INCREF(&ue_PyIHttpRequestType);
261271
PyModule_AddObject(ue_module, "IHttpRequest", (PyObject *)&ue_PyIHttpRequestType);
262-
}
272+
}

Source/UnrealEnginePython/Private/UEPyIHttpRequest.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ typedef struct {
1414
ue_PyIHttpBase base;
1515
/* Type-specific fields go here. */
1616
TSharedRef<IHttpRequest> http_request;
17+
PyObject *py_dict;
1718
} ue_PyIHttpRequest;
1819

1920

0 commit comments

Comments
 (0)