inspect: Fix getsource() to support decorated functions.

Issue #1764286. Patch by Claudiu Popa.
diff --git a/Lib/inspect.py b/Lib/inspect.py
index 819bb8d..ae55347 100644
--- a/Lib/inspect.py
+++ b/Lib/inspect.py
@@ -817,6 +817,7 @@
     corresponding to the object and the line number indicates where in the
     original source file the first line of code was found.  An OSError is
     raised if the source code cannot be retrieved."""
+    object = unwrap(object)
     lines, lnum = findsource(object)
 
     if ismodule(object): return lines, 0
diff --git a/Lib/test/inspect_fodder2.py b/Lib/test/inspect_fodder2.py
index bd7106f..e452235 100644
--- a/Lib/test/inspect_fodder2.py
+++ b/Lib/test/inspect_fodder2.py
@@ -109,3 +109,16 @@
 #line 109
 def keyword_only_arg(*, arg):
     pass
+
+from functools import wraps
+
+def decorator(func):
+    @wraps(func)
+    def fake():
+        return 42
+    return fake
+
+#line 121
+@decorator
+def real():
+    return 20
diff --git a/Lib/test/test_inspect.py b/Lib/test/test_inspect.py
index 6da5822..1da88c4 100644
--- a/Lib/test/test_inspect.py
+++ b/Lib/test/test_inspect.py
@@ -377,6 +377,9 @@
     def test_replacing_decorator(self):
         self.assertSourceEqual(mod2.gone, 9, 10)
 
+    def test_getsource_unwrap(self):
+        self.assertSourceEqual(mod2.real, 122, 124)
+
 class TestOneliners(GetSourceBase):
     fodderModule = mod2
     def test_oneline_lambda(self):
diff --git a/Misc/NEWS b/Misc/NEWS
index ad539e3..47fbafa7 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -10,6 +10,9 @@
 Core and Builtins
 -----------------
 
+- Issue #1764286: Fix inspect.getsource() to support decorated functions.
+  Patch by Claudiu Popa.
+
 - Issue #18554: os.__all__ includes posix functions.
 
 - Issue #21391: Use os.path.abspath in the shutil module.