@@ -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+
194202static 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+ }
0 commit comments