Skip to content

Commit 9008e2c

Browse files
authored
SNOW-761669: fix memory leak in c logging (#1479)
1 parent 1b437d5 commit 9008e2c

File tree

3 files changed

+16
-6
lines changed

3 files changed

+16
-6
lines changed

DESCRIPTION.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ Source code is also available at: https://github.com/snowflakedb/snowflake-conne
88

99
# Release Notes
1010

11+
- v3.0.2(Unreleased)
12+
13+
- Fixed a memory leak in the logging module of the Cython extension
14+
1115
- v3.0.1(February 28, 2023)
1216

1317
- Improved the robustness of OCSP response caching to handle errors in cases of serialization and deserialization.

src/snowflake/connector/cpp/Logging/logging.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -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());

src/snowflake/connector/version.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
# Update this for the versions
22
# Don't change the forth version number from None
3-
VERSION = (3, 0, 1, None)
3+
VERSION = (3, 0, 2, None)

0 commit comments

Comments
 (0)