[2.7] bpo-33026: Fix jumping out of "with" block by setting f_lineno. (GH-6026). (GH-6074) (GH-6076)

(cherry picked from commit 26c9f565d016db21257a60d29ab2c99383dd5ac7)
(cherry picked from commit 04aadf23eac51fec2e436c5960c1362bbb7d03de)

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
diff --git a/Objects/frameobject.c b/Objects/frameobject.c
index 2c8fb01..bf1c7c5 100644
--- a/Objects/frameobject.c
+++ b/Objects/frameobject.c
@@ -340,6 +340,11 @@
             PyObject *v = (*--f->f_stacktop);
             Py_DECREF(v);
         }
+        if (b->b_type == SETUP_WITH) {
+            /* Pop the exit function. */
+            PyObject *v = (*--f->f_stacktop);
+            Py_DECREF(v);
+        }
     }
 
     /* Finally set the new f_lineno and f_lasti and return OK. */