diff --git a/Lib/sre_parse.py b/Lib/sre_parse.py
index 7313a1f..f6b53de 100644
--- a/Lib/sre_parse.py
+++ b/Lib/sre_parse.py
@@ -83,8 +83,8 @@
         if name:
             ogid = self.groupdict.get(name, None)
             if ogid is not None:
-                raise error, ("redefinition of group name %s as group %d; " +
-                              "was group %d") % (`name`, gid,  ogid)
+                raise error, ("redefinition of group name %s as group %d; "
+                              "was group %d" % (repr(name), gid,  ogid))
             self.groupdict[name] = gid
         self.open.append(gid)
         return gid
diff --git a/Lib/test/re_tests.py b/Lib/test/re_tests.py
index d69b324..953e4fd 100755
--- a/Lib/test/re_tests.py
+++ b/Lib/test/re_tests.py
@@ -638,8 +638,14 @@
     (r'(?i)[m]+', 'MMM', SUCCEED, 'found', 'MMM'),
     # bug 130748: ^* should be an error (nothing to repeat)
     (r'^*', '', SYNTAX_ERROR),
-    # bug 133283: minimizing repeat bug
-    (r'"(?:\\"|[^"])*?"', r'"\""', SUCCEED, 'found', r'"\"'),
+    # bug 133283: minimizing repeat problem
+    (r'"(?:\\"|[^"])*?"', r'"\""', SUCCEED, 'found', r'"\""'),
+    # bug 477728: minimizing repeat problem
+    (r'^.*?$', 'one\ntwo\nthree\n', FAIL),
+    # bug 483789: minimizing repeat problem
+    (r'a[^>]*?b', 'a>b', FAIL),
+    # bug 490573: minimizing repeat problem
+    (r'^a*?$', 'foo', FAIL),
 ]
 
 try:
diff --git a/Lib/test/test_sre.py b/Lib/test/test_sre.py
index 6442036..abd55db 100644
--- a/Lib/test/test_sre.py
+++ b/Lib/test/test_sre.py
@@ -296,7 +296,7 @@
 # implementation of repeated groups.
 test("sre.match('(x)*', 50000*'x').span()", (0, 50000), RuntimeError)
 test("sre.match(r'(x)*y', 50000*'x'+'y').span()", (0, 50001), RuntimeError)
-test("sre.match(r'(x)*?y', 50000*'x'+'y').span()", (0, 50001))
+test("sre.match(r'(x)*?y', 50000*'x'+'y').span()", (0, 50001), RuntimeError)
 
 from re_tests import *
 
diff --git a/Modules/_sre.c b/Modules/_sre.c
index b62b17f..769965f 100644
--- a/Modules/_sre.c
+++ b/Modules/_sre.c
@@ -36,6 +36,7 @@
  * 2001-10-21 fl  added sub/subn primitive
  * 2001-10-22 fl  check for literal sub/subn templates
  * 2001-10-24 fl  added finditer primitive (for 2.2 only)
+ * 2001-12-07 fl  fixed memory leak in sub/subn (Guido van Rossum)
  *
  * Copyright (c) 1997-2001 by Secret Labs AB.  All rights reserved.
  *
@@ -1116,21 +1117,9 @@
 
             /* see if the tail matches */
             state->repeat = rp->prev;
-            /* FIXME: the following fix doesn't always work (#133283) */
-            if (rp->pattern[2] == 65535) {
-                /* unbounded repeat */
-                for (;;) {
-                    i = SRE_MATCH(state, pattern, level + 1);
-                    if (i || ptr >= end)
-                        break;
-                    state->ptr = ++ptr;
-                }
-            } else
-                i = SRE_MATCH(state, pattern, level + 1);
-            if (i) {
-                /* free(rp); */
+            i = SRE_MATCH(state, pattern, level + 1);
+            if (i)
                 return i;
-            }
 
             state->ptr = ptr;
             state->repeat = rp;
@@ -2143,11 +2132,14 @@
     }
 
     string = state_init(&state, self, string, 0, INT_MAX);
-    if (!string)
+    if (!string) {
+        Py_DECREF(filter);
         return NULL;
+    }
 
     list = PyList_New(0);
     if (!list) {
+        Py_DECREF(filter);
         state_fini(&state);
         return NULL;
     }
@@ -2260,9 +2252,9 @@
     return item;
 
 error:
-    Py_DECREF(filter);
     Py_DECREF(list);
     state_fini(&state);
+    Py_DECREF(filter);
     return NULL;
     
 }
@@ -2403,7 +2395,7 @@
 
 statichere PyTypeObject Pattern_Type = {
     PyObject_HEAD_INIT(NULL)
-    0, "_sre.SRE_Pattern",
+    0, "_" SRE_MODULE ".SRE_Pattern",
     sizeof(PatternObject), sizeof(SRE_CODE),
     (destructor)pattern_dealloc, /*tp_dealloc*/
     0, /*tp_print*/
@@ -2866,7 +2858,7 @@
 
 statichere PyTypeObject Match_Type = {
     PyObject_HEAD_INIT(NULL)
-    0, "_sre.SRE_Match",
+    0, "_" SRE_MODULE ".SRE_Match",
     sizeof(MatchObject), sizeof(int),
     (destructor)match_dealloc, /*tp_dealloc*/
     0, /*tp_print*/
@@ -2974,7 +2966,7 @@
 
 statichere PyTypeObject Scanner_Type = {
     PyObject_HEAD_INIT(NULL)
-    0, "_sre.SRE_Scanner",
+    0, "_" SRE_MODULE ".SRE_Scanner",
     sizeof(ScannerObject), 0,
     (destructor)scanner_dealloc, /*tp_dealloc*/
     0, /*tp_print*/
