Mercurial > cpython-lru_cache-weakref
comparison Python/pythonrun.c @ 43855:ee081609cee8
Added some additional checks for sys.std?? is None, see #1440
| author | Christian Heimes <christian@cheimes.de> |
|---|---|
| date | Thu, 15 Nov 2007 02:26:46 +0000 |
| parents | e162e881ea5f |
| children | 8ed0280c2ab6 |
comparison
equal
deleted
inserted
replaced
| 43854:3c29d73c7769 | 43855:ee081609cee8 |
|---|---|
| 333 { | 333 { |
| 334 PyObject *fout = PySys_GetObject("stdout"); | 334 PyObject *fout = PySys_GetObject("stdout"); |
| 335 PyObject *ferr = PySys_GetObject("stderr"); | 335 PyObject *ferr = PySys_GetObject("stderr"); |
| 336 PyObject *tmp; | 336 PyObject *tmp; |
| 337 | 337 |
| 338 if (fout != NULL) { | 338 if (fout != NULL && fout != Py_None) { |
| 339 tmp = PyObject_CallMethod(fout, "flush", ""); | 339 tmp = PyObject_CallMethod(fout, "flush", ""); |
| 340 if (tmp == NULL) | 340 if (tmp == NULL) |
| 341 PyErr_Clear(); | 341 PyErr_Clear(); |
| 342 else | 342 else |
| 343 Py_DECREF(tmp); | 343 Py_DECREF(tmp); |
| 344 } | 344 } |
| 345 | 345 |
| 346 if (ferr != NULL) { | 346 if (ferr != NULL || ferr != Py_None) { |
| 347 tmp = PyObject_CallMethod(ferr, "flush", ""); | 347 tmp = PyObject_CallMethod(ferr, "flush", ""); |
| 348 if (tmp == NULL) | 348 if (tmp == NULL) |
| 349 PyErr_Clear(); | 349 PyErr_Clear(); |
| 350 else | 350 else |
| 351 Py_DECREF(tmp); | 351 Py_DECREF(tmp); |
| 691 { | 691 { |
| 692 PyObject *m, *f; | 692 PyObject *m, *f; |
| 693 m = PyImport_ImportModule("site"); | 693 m = PyImport_ImportModule("site"); |
| 694 if (m == NULL) { | 694 if (m == NULL) { |
| 695 f = PySys_GetObject("stderr"); | 695 f = PySys_GetObject("stderr"); |
| 696 if (f == NULL || f == Py_None) | |
| 697 return; | |
| 696 if (Py_VerboseFlag) { | 698 if (Py_VerboseFlag) { |
| 697 PyFile_WriteString( | 699 PyFile_WriteString( |
| 698 "'import site' failed; traceback:\n", f); | 700 "'import site' failed; traceback:\n", f); |
| 699 PyErr_Print(); | 701 PyErr_Print(); |
| 700 } | 702 } |
| 898 int errcode = 0; | 900 int errcode = 0; |
| 899 | 901 |
| 900 if (fp == stdin) { | 902 if (fp == stdin) { |
| 901 /* Fetch encoding from sys.stdin */ | 903 /* Fetch encoding from sys.stdin */ |
| 902 v = PySys_GetObject("stdin"); | 904 v = PySys_GetObject("stdin"); |
| 903 if (!v) | 905 if (v == NULL || v == Py_None) |
| 904 return -1; | 906 return -1; |
| 905 oenc = PyObject_GetAttrString(v, "encoding"); | 907 oenc = PyObject_GetAttrString(v, "encoding"); |
| 906 if (!oenc) | 908 if (!oenc) |
| 907 return -1; | 909 return -1; |
| 908 enc = PyUnicode_AsString(oenc); | 910 enc = PyUnicode_AsString(oenc); |
| 1291 PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) | 1293 PyErr_Display(PyObject *exception, PyObject *value, PyObject *tb) |
| 1292 { | 1294 { |
| 1293 int err = 0; | 1295 int err = 0; |
| 1294 PyObject *f = PySys_GetObject("stderr"); | 1296 PyObject *f = PySys_GetObject("stderr"); |
| 1295 Py_INCREF(value); | 1297 Py_INCREF(value); |
| 1296 if (f == NULL) { | 1298 if (f == Py_None) { |
| 1299 /* pass */ | |
| 1300 } | |
| 1301 else if (f == NULL) { | |
| 1297 _PyObject_Dump(value); | 1302 _PyObject_Dump(value); |
| 1298 fprintf(stderr, "lost sys.stderr\n"); | 1303 fprintf(stderr, "lost sys.stderr\n"); |
| 1299 } | 1304 } |
| 1300 else { | 1305 else { |
| 1301 fflush(stdout); | 1306 fflush(stdout); |
