@@ -46,11 +46,17 @@ void Logger::log(int level, const char *path_name, const char *func_name, int li
4646 py::UniqueRef call_log (PyObject_GetAttrString (logger, " log" ));
4747
4848 // prepare keyword args for snow_logger
49- PyDict_SetItemString (keywords.get (), " level" , Py_BuildValue (" i" , level));
50- PyDict_SetItemString (keywords.get (), " path_name" , Py_BuildValue (" s" , path_name));
51- PyDict_SetItemString (keywords.get (), " func_name" , Py_BuildValue (" s" , func_name));
52- PyDict_SetItemString (keywords.get (), " line_num" , Py_BuildValue (" i" , line_num));
53- PyDict_SetItemString (keywords.get (), " msg" , Py_BuildValue (" s" , msg));
49+ py::UniqueRef level_ref (Py_BuildValue (" i" , level));
50+ py::UniqueRef path_name_ref (Py_BuildValue (" s" , path_name));
51+ py::UniqueRef func_name_ref (Py_BuildValue (" s" , func_name));
52+ py::UniqueRef line_num_ref (Py_BuildValue (" i" , line_num));
53+ py::UniqueRef msg_ref (Py_BuildValue (" s" , msg));
54+
55+ PyDict_SetItemString (keywords.get (), " level" , level_ref.get ());
56+ PyDict_SetItemString (keywords.get (), " path_name" , path_name_ref.get ());
57+ PyDict_SetItemString (keywords.get (), " func_name" , func_name_ref.get ());
58+ PyDict_SetItemString (keywords.get (), " line_num" , line_num_ref.get ());
59+ PyDict_SetItemString (keywords.get (), " msg" , msg_ref.get ());
5460
5561 // call snow_logging.SnowLogger.log()
5662 PyObject_Call (call_log.get (), Py_BuildValue (" ()" ), keywords.get ());
0 commit comments