]> granicus.if.org Git - python/commitdiff
Fixing obscure syslog corner-case when sys.argv = None, syslog() would call
authorSean Reifscheider <jafo@tummy.com>
Sun, 25 Apr 2010 06:31:23 +0000 (06:31 +0000)
committerSean Reifscheider <jafo@tummy.com>
Sun, 25 Apr 2010 06:31:23 +0000 (06:31 +0000)
openlog() for every logged message.

Modules/syslogmodule.c

index 94328bacd85741677be59f50b74cdd753e0ff038..9a44d44a16bf61c633c488c8756490ced442ffec 100644 (file)
@@ -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;
 }