diff options
author | Sean Reifscheider <jafo@tummy.com> | 2010-04-25 06:31:23 (GMT) |
---|---|---|
committer | Sean Reifscheider <jafo@tummy.com> | 2010-04-25 06:31:23 (GMT) |
commit | ca2e61276e2da52c5a6a721403a9e312ee70164b (patch) | |
tree | 3048e0a4dce89d7abed54f730e07db84659438e2 | |
parent | fc69af15629389801db4da64ac06b0a0e747e60a (diff) | |
download | cpython-ca2e61276e2da52c5a6a721403a9e312ee70164b.zip cpython-ca2e61276e2da52c5a6a721403a9e312ee70164b.tar.gz cpython-ca2e61276e2da52c5a6a721403a9e312ee70164b.tar.bz2 |
Fixing obscure syslog corner-case when sys.argv = None, syslog() would call
openlog() for every logged message.
-rw-r--r-- | Modules/syslogmodule.c | 15 |
1 files 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; } |