Fix SF # 626275, missing DECREF's in embedding example

Tested w/valgrind, all paths except the return on PyInt_AsLong() failure
I think I got all of these right.

Backport candidate.
diff --git a/Doc/ext/run-func.c b/Doc/ext/run-func.c
index 7733439..b5be5c6 100644
--- a/Doc/ext/run-func.c
+++ b/Doc/ext/run-func.c
@@ -17,6 +17,8 @@
     /* Error checking of pName left out */
 
     pModule = PyImport_Import(pName);
+    Py_DECREF(pName);
+
     if (pModule != NULL) {
         pDict = PyModule_GetDict(pModule);
         /* pDict is a borrowed reference */
@@ -29,6 +31,8 @@
             for (i = 0; i < argc - 3; ++i) {
                 pValue = PyInt_FromLong(atoi(argv[i + 3]));
                 if (!pValue) {
+                    Py_DECREF(pArgs);
+                    Py_DECREF(pModule);
                     fprintf(stderr, "Cannot convert argument\n");
                     return 1;
                 }
@@ -36,20 +40,22 @@
                 PyTuple_SetItem(pArgs, i, pValue);
             }
             pValue = PyObject_CallObject(pFunc, pArgs);
+            Py_DECREF(pArgs);
             if (pValue != NULL) {
                 printf("Result of call: %ld\n", PyInt_AsLong(pValue));
                 Py_DECREF(pValue);
             }
             else {
+                Py_DECREF(pModule);
                 PyErr_Print();
                 fprintf(stderr,"Call failed\n");
                 return 1;
             }
-            Py_DECREF(pArgs);
             /* pDict and pFunc are borrowed and must not be Py_DECREF-ed */
         }
         else {
-            PyErr_Print();
+            if (PyErr_Occurred())
+                PyErr_Print();
             fprintf(stderr, "Cannot find function \"%s\"\n", argv[2]);
         }
         Py_DECREF(pModule);
@@ -59,7 +65,6 @@
         fprintf(stderr, "Failed to load \"%s\"\n", argv[1]);
         return 1;
     }
-    Py_DECREF(pName);
     Py_Finalize();
     return 0;
 }