(py-execute-region): Do the blank line skipping inside the
save-excursion so that when the function is complete, point is
preserved.
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index b242f3b..ec997c2 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -1495,14 +1495,6 @@
 is inserted at the end.  See also the command `py-clear-queue'."
   (interactive "r\nP")
   ;; Skip ahead to the first non-blank line
-  (goto-char start)
-  (beginning-of-line)
-  (while (and (looking-at "\\s *$")
-	      (< (point) end))
-    (forward-line 1))
-  (setq start (point))
-  (or (< start end)
-      (error "Region is empty"))
   (let* ((proc (get-process py-which-bufname))
 	 (temp (if (memq 'broken-temp-names py-emacs-features)
 		   (let
@@ -1520,6 +1512,13 @@
     ;; Write the contents of the buffer, watching out for indented regions.
     (save-excursion
       (goto-char start)
+      (beginning-of-line)
+      (while (and (looking-at "\\s *$")
+		  (< (point) end))
+	(forward-line 1))
+      (setq start (point))
+      (or (< start end)
+	  (error "Region is empty"))
       (let ((needs-if (/= (py-point 'bol) (py-point 'boi))))
 	(set-buffer buf)
 	(python-mode)