From 6b3f3f2861fdb86f0065b7d797ea76098797e06c Mon Sep 17 00:00:00 2001 From: Fred Drake Date: Wed, 29 Nov 2000 15:48:22 +0000 Subject: In the first discussion showing how to handle exceptions from C, make the Python equivalent actually equivalent to the C code. Also, in the C code, place the "goto" statements on a line by themselves for better visibility of statements that affect control flow. This closes bug #123398. --- Doc/api/api.tex | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/Doc/api/api.tex b/Doc/api/api.tex index e38e0b5..28fd985 100644 --- a/Doc/api/api.tex +++ b/Doc/api/api.tex @@ -456,7 +456,7 @@ def incr_item(dict, key): item = dict[key] except KeyError: item = 0 - return item + 1 + dict[key] = item + 1 \end{verbatim} \ttindex{incr_item()} @@ -472,21 +472,25 @@ int incr_item(PyObject *dict, PyObject *key) item = PyObject_GetItem(dict, key); if (item == NULL) { /* Handle KeyError only: */ - if (!PyErr_ExceptionMatches(PyExc_KeyError)) goto error; + if (!PyErr_ExceptionMatches(PyExc_KeyError)) + goto error; /* Clear the error and use zero: */ PyErr_Clear(); item = PyInt_FromLong(0L); - if (item == NULL) goto error; + if (item == NULL) + goto error; } - const_one = PyInt_FromLong(1L); - if (const_one == NULL) goto error; + if (const_one == NULL) + goto error; incremented_item = PyNumber_Add(item, const_one); - if (incremented_item == NULL) goto error; + if (incremented_item == NULL) + goto error; - if (PyObject_SetItem(dict, key, incremented_item) < 0) goto error; + if (PyObject_SetItem(dict, key, incremented_item) < 0) + goto error; rv = 0; /* Success */ /* Continue with cleanup code */ -- cgit v0.12