From ca2e61276e2da52c5a6a721403a9e312ee70164b Mon Sep 17 00:00:00 2001 From: Sean Reifscheider Date: Sun, 25 Apr 2010 06:31:23 +0000 Subject: Fixing obscure syslog corner-case when sys.argv = None, syslog() would call openlog() for every logged message. --- Modules/syslogmodule.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/Modules/syslogmodule.c b/Modules/syslogmodule.c index 94328ba..9a44d44 100644 --- a/Modules/syslogmodule.c +++ b/Modules/syslogmodule.c @@ -56,6 +56,7 @@ Revision history: /* only one instance, only one syslog, so globals should be ok */ static PyObject *S_ident_o = NULL; /* identifier, held by openlog() */ +static char S_log_open = 0; static PyObject * @@ -133,6 +134,7 @@ syslog_openlog(PyObject * self, PyObject * args, PyObject *kwds) */ openlog(S_ident_o ? PyString_AsString(S_ident_o) : NULL, logopt, facility); + S_log_open = 1; Py_INCREF(Py_None); return Py_None; @@ -153,8 +155,8 @@ syslog_syslog(PyObject * self, PyObject * args) return NULL; } - /* call openlog if no current identifier */ - if (!S_ident_o) { + /* if log is not opened, open it now */ + if (!S_log_open) { PyObject *openargs; /* Continue even if PyTuple_New fails, because openlog(3) is optional. @@ -178,9 +180,12 @@ syslog_syslog(PyObject * self, PyObject * args) static PyObject * syslog_closelog(PyObject *self, PyObject *unused) { - closelog(); - Py_XDECREF(S_ident_o); - S_ident_o = NULL; + if (S_log_open) { + closelog(); + Py_XDECREF(S_ident_o); + S_ident_o = NULL; + S_log_open = 0; + } Py_INCREF(Py_None); return Py_None; } -- cgit v0.12