Mercurial > cpython-lru_cache-weakref
comparison Python/pythonrun.c @ 76085:ff7587546a1d
merge 3.2
| author | Benjamin Peterson <benjamin@python.org> |
|---|---|
| date | Tue, 03 Apr 2012 00:35:36 -0400 |
| parents | b299c4f31ff2 43606a4085b0 |
| children | 2dd046be2c88 |
comparison
equal
deleted
inserted
replaced
| 76076:e97940f701be | 76085:ff7587546a1d |
|---|---|
| 1354 _Py_IDENTIFIER(filename); | 1354 _Py_IDENTIFIER(filename); |
| 1355 _Py_IDENTIFIER(lineno); | 1355 _Py_IDENTIFIER(lineno); |
| 1356 _Py_IDENTIFIER(offset); | 1356 _Py_IDENTIFIER(offset); |
| 1357 _Py_IDENTIFIER(text); | 1357 _Py_IDENTIFIER(text); |
| 1358 | 1358 |
| 1359 *message = NULL; | |
| 1360 | |
| 1359 /* new style errors. `err' is an instance */ | 1361 /* new style errors. `err' is an instance */ |
| 1360 | 1362 *message = _PyObject_GetAttrId(err, &PyId_msg); |
| 1361 if (! (v = _PyObject_GetAttrId(err, &PyId_msg))) | 1363 if (!*message) |
| 1362 goto finally; | 1364 goto finally; |
| 1363 *message = v; | 1365 |
| 1364 | 1366 v = _PyObject_GetAttrId(err, &PyId_filename); |
| 1365 if (!(v = _PyObject_GetAttrId(err, &PyId_filename))) | 1367 if (!v) |
| 1366 goto finally; | 1368 goto finally; |
| 1367 if (v == Py_None) | 1369 if (v == Py_None) { |
| 1370 Py_DECREF(v); | |
| 1368 *filename = NULL; | 1371 *filename = NULL; |
| 1369 else if (! (*filename = _PyUnicode_AsString(v))) | 1372 } |
| 1370 goto finally; | 1373 else { |
| 1371 | 1374 *filename = _PyUnicode_AsString(v); |
| 1372 Py_DECREF(v); | 1375 Py_DECREF(v); |
| 1373 if (!(v = _PyObject_GetAttrId(err, &PyId_lineno))) | 1376 if (!*filename) |
| 1377 goto finally; | |
| 1378 } | |
| 1379 | |
| 1380 v = _PyObject_GetAttrId(err, &PyId_lineno); | |
| 1381 if (!v) | |
| 1374 goto finally; | 1382 goto finally; |
| 1375 hold = PyLong_AsLong(v); | 1383 hold = PyLong_AsLong(v); |
| 1376 Py_DECREF(v); | 1384 Py_DECREF(v); |
| 1377 v = NULL; | |
| 1378 if (hold < 0 && PyErr_Occurred()) | 1385 if (hold < 0 && PyErr_Occurred()) |
| 1379 goto finally; | 1386 goto finally; |
| 1380 *lineno = (int)hold; | 1387 *lineno = (int)hold; |
| 1381 | 1388 |
| 1382 if (!(v = _PyObject_GetAttrId(err, &PyId_offset))) | 1389 v = _PyObject_GetAttrId(err, &PyId_offset); |
| 1390 if (!v) | |
| 1383 goto finally; | 1391 goto finally; |
| 1384 if (v == Py_None) { | 1392 if (v == Py_None) { |
| 1385 *offset = -1; | 1393 *offset = -1; |
| 1386 Py_DECREF(v); | 1394 Py_DECREF(v); |
| 1387 v = NULL; | |
| 1388 } else { | 1395 } else { |
| 1389 hold = PyLong_AsLong(v); | 1396 hold = PyLong_AsLong(v); |
| 1390 Py_DECREF(v); | 1397 Py_DECREF(v); |
| 1391 v = NULL; | |
| 1392 if (hold < 0 && PyErr_Occurred()) | 1398 if (hold < 0 && PyErr_Occurred()) |
| 1393 goto finally; | 1399 goto finally; |
| 1394 *offset = (int)hold; | 1400 *offset = (int)hold; |
| 1395 } | 1401 } |
| 1396 | 1402 |
| 1397 if (!(v = _PyObject_GetAttrId(err, &PyId_text))) | 1403 v = _PyObject_GetAttrId(err, &PyId_text); |
| 1404 if (!v) | |
| 1398 goto finally; | 1405 goto finally; |
| 1399 if (v == Py_None) | 1406 if (v == Py_None) { |
| 1407 Py_DECREF(v); | |
| 1400 *text = NULL; | 1408 *text = NULL; |
| 1401 else if (!PyUnicode_Check(v) || | 1409 } |
| 1402 !(*text = _PyUnicode_AsString(v))) | 1410 else { |
| 1403 goto finally; | 1411 *text = _PyUnicode_AsString(v); |
| 1404 Py_DECREF(v); | 1412 Py_DECREF(v); |
| 1413 if (!*text) | |
| 1414 goto finally; | |
| 1415 } | |
| 1405 return 1; | 1416 return 1; |
| 1406 | 1417 |
| 1407 finally: | 1418 finally: |
| 1408 Py_XDECREF(v); | 1419 Py_XDECREF(*message); |
| 1409 return 0; | 1420 return 0; |
| 1410 } | 1421 } |
| 1411 | 1422 |
| 1412 void | 1423 void |
| 1413 PyErr_Print(void) | 1424 PyErr_Print(void) |
