summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Reifscheider <jafo@tummy.com>2010-04-25 06:31:23 (GMT)
committerSean Reifscheider <jafo@tummy.com>2010-04-25 06:31:23 (GMT)
commitca2e61276e2da52c5a6a721403a9e312ee70164b (patch)
tree3048e0a4dce89d7abed54f730e07db84659438e2
parentfc69af15629389801db4da64ac06b0a0e747e60a (diff)
downloadcpython-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.c15
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;
}