From 6b3f3f2861fdb86f0065b7d797ea76098797e06c Mon Sep 17 00:00:00 2001
From: Fred Drake <fdrake@acm.org>
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

