Check in a testcase for SF bug #449000: re.sub(r'\n', ...) broke.
diff --git a/Lib/test/test_re.py b/Lib/test/test_re.py
index f4c5cb8..45bb3b1 100644
--- a/Lib/test/test_re.py
+++ b/Lib/test/test_re.py
@@ -59,6 +59,12 @@
     verify(re.sub('a', '\t\n\v\r\f\a', 'a') == (chr(9)+chr(10)+chr(11)+chr(13)+chr(12)+chr(7)))
 
     verify(re.sub('^\s*', 'X', 'test') == 'Xtest')
+
+    # Test for sub() on escaped characters, see SF bug #449000
+    verify(re.sub(r'\r\n', r'\n', 'abc\r\ndef\r\n') == 'abc\ndef\n')
+    verify(re.sub('\r\n', r'\n', 'abc\r\ndef\r\n') == 'abc\ndef\n')
+    verify(re.sub(r'\r\n', '\n', 'abc\r\ndef\r\n') == 'abc\ndef\n')
+    verify(re.sub('\r\n', '\n', 'abc\r\ndef\r\n') == 'abc\ndef\n')
 except AssertionError:
     raise TestFailed, "re.sub"
 
diff --git a/Lib/test/test_sre.py b/Lib/test/test_sre.py
index e266d14..f673c33 100644
--- a/Lib/test/test_sre.py
+++ b/Lib/test/test_sre.py
@@ -117,6 +117,12 @@
 # bug 114660
 test(r"""sre.sub(r'(\S)\s+(\S)', r'\1 \2', 'hello  there')""", 'hello there')
 
+# Test for sub() on escaped characters, see SF bug #449000
+test(r"""sre.sub(r'\r\n', r'\n', 'abc\r\ndef\r\n')""", 'abc\ndef\n')
+test(r"""sre.sub('\r\n', r'\n', 'abc\r\ndef\r\n')""", 'abc\ndef\n')
+test(r"""sre.sub(r'\r\n', '\n', 'abc\r\ndef\r\n')""", 'abc\ndef\n')
+test(r"""sre.sub('\r\n', '\n', 'abc\r\ndef\r\n')""", 'abc\ndef\n')
+
 if verbose:
     print 'Running tests on symbolic references'