diff --git a/Lib/distutils/command/build_ext.py b/Lib/distutils/command/build_ext.py
index 293c214..c2c1bf1 100644
--- a/Lib/distutils/command/build_ext.py
+++ b/Lib/distutils/command/build_ext.py
@@ -643,16 +643,16 @@
         (inplace option).
         """
         fullname = self.get_ext_fullname(ext_name)
-        filename = self.get_ext_filename(fullname)
+        modpath = fullname.split('.')
+        package = '.'.join(modpath[0:-1])
+        base = modpath[-1]
+        filename = self.get_ext_filename(base)
         if not self.inplace:
             # no further work needed
             return os.path.join(self.build_lib, filename)
 
         # the inplace option requires to find the package directory
         # using the build_py command
-        modpath = fullname.split('.')
-        package = '.'.join(modpath[0:-1])
-        base = modpath[-1]
         build_py = self.get_finalized_command('build_py')
         package_dir = os.path.abspath(build_py.get_package_dir(package))
         return os.path.join(package_dir, filename)
diff --git a/Lib/distutils/tests/test_build_ext.py b/Lib/distutils/tests/test_build_ext.py
index 12b8581..5f28b79 100644
--- a/Lib/distutils/tests/test_build_ext.py
+++ b/Lib/distutils/tests/test_build_ext.py
@@ -339,10 +339,9 @@
         # inplace = 0, cmd.package = 'bar'
         cmd.package = 'bar'
         path = cmd.get_ext_fullpath('foo')
-        # checking that the last directory is bar
+        # checking that the last directory is the build_dir
         path = os.path.split(path)[0]
-        lastdir = os.path.split(path)[-1]
-        self.assertEquals(lastdir, cmd.package)
+        self.assertEquals(path, cmd.build_lib)
 
         # inplace = 1, cmd.package = 'bar'
         cmd.inplace = 1
@@ -358,6 +357,19 @@
         lastdir = os.path.split(path)[-1]
         self.assertEquals(lastdir, cmd.package)
 
+    def test_build_ext_inplace(self):
+        etree_c = os.path.join(self.tmp_dir, 'lxml.etree.c')
+        etree_ext = Extension('lxml.etree', [etree_c])
+        dist = Distribution({'name': 'lxml', 'ext_modules': [etree_ext]})
+        cmd = build_ext(dist)
+        cmd.inplace = 1
+        cmd.distribution.package_dir = {'': 'src'}
+        cmd.distribution.packages = ['lxml', 'lxml.html']
+        curdir = os.getcwd()
+        wanted = os.path.join(curdir, 'src', 'lxml', 'etree.so')
+        path = cmd.get_ext_fullpath('lxml.etree')
+        self.assertEquals(wanted, path)
+
 def test_suite():
     src = _get_source_filename()
     if not os.path.exists(src):
diff --git a/Misc/NEWS b/Misc/NEWS
index 752cd32..30e2217 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -337,6 +337,9 @@
 Library
 -------
 
+- Issue #6365: Distutils build_ext inplace mode was copying the compiled 
+  extension in a subdirectory if the extension name had dots.
+
 - Issue #6344: Fixed a crash of mmap.read() when passed a negative argument.
 
 - Issue #5230: pydoc would report no documentation found if a module generated
