]> granicus.if.org Git - python/commitdiff
Apply str() to sys.ps1 or sys.ps2 before using them as a prompt, so
authorGuido van Rossum <guido@python.org>
Tue, 25 Nov 1997 20:58:13 +0000 (20:58 +0000)
committerGuido van Rossum <guido@python.org>
Tue, 25 Nov 1997 20:58:13 +0000 (20:58 +0000)
you can assign an object whose str() evaluates to the current
directory (or whatever).

Python/pythonrun.c

index bfed548674e91f35e478d0d17c22c580d2cb7d8f..b8abe252ea13aeb1a640cf9608b3d0dbca030def 100644 (file)
@@ -459,24 +459,22 @@ PyRun_InteractiveOne(fp, filename)
        PyObject *m, *d, *v, *w;
        node *n;
        perrdetail err;
-       char *ps1, *ps2;
+       char *ps1 = "", *ps2 = "";
        v = PySys_GetObject("ps1");
-       w = PySys_GetObject("ps2");
-       if (v != NULL && PyString_Check(v)) {
-               Py_INCREF(v);
-               ps1 = PyString_AsString(v);
-       }
-       else {
-               v = NULL;
-               ps1 = "";
-       }
-       if (w != NULL && PyString_Check(w)) {
-               Py_INCREF(w);
-               ps2 = PyString_AsString(w);
+       if (v != NULL) {
+               v = PyObject_Str(v);
+               if (v == NULL)
+                       PyErr_Clear();
+               else if (PyString_Check(v))
+                       ps1 = PyString_AsString(v);
        }
-       else {
-               w = NULL;
-               ps2 = "";
+       w = PySys_GetObject("ps2");
+       if (w != NULL) {
+               w = PyObject_Str(w);
+               if (w == NULL)
+                       PyErr_Clear();
+               else if (PyString_Check(w))
+                       ps2 = PyString_AsString(w);
        }
        Py_BEGIN_ALLOW_THREADS
        n = PyParser_ParseFile(fp, filename, &_PyParser_Grammar,