diff --git a/Lib/shutil.py b/Lib/shutil.py
index 5341786..10b7a27 100644
--- a/Lib/shutil.py
+++ b/Lib/shutil.py
@@ -8,6 +8,7 @@
 import sys
 import stat
 import exceptions
+from os.path import abspath
 
 __all__ = ["copyfileobj","copyfile","copymode","copystat","copy","copy2",
            "copytree","move","rmtree","Error"]
@@ -164,8 +165,13 @@
         os.rename(src, dst)
     except OSError:
         if os.path.isdir(src):
+            if destinsrc(src, dst):
+                raise Error, "Cannot move a directory '%s' into itself '%s'." % (src, dst)
             copytree(src, dst, symlinks=True)
             rmtree(src)
         else:
             copy2(src,dst)
             os.unlink(src)
+
+def destinsrc(src, dst):
+    return abspath(dst).startswith(abspath(src))
diff --git a/Lib/test/test_shutil.py b/Lib/test/test_shutil.py
index 3a39ec9..05f34d8 100644
--- a/Lib/test/test_shutil.py
+++ b/Lib/test/test_shutil.py
@@ -3,6 +3,8 @@
 import unittest
 import shutil
 import tempfile
+import os
+import os.path
 from test import test_support
 
 class TestShutil(unittest.TestCase):
@@ -12,11 +14,21 @@
         self.assertRaises(OSError, shutil.rmtree, filename)
         self.assertEqual(shutil.rmtree(filename, True), None)
 
+    def test_dont_move_dir_in_itself(self):
+        src_dir = tempfile.mkdtemp()
+        try:
+            dst = os.path.join(src_dir, 'foo')
+            self.assertRaises(shutil.Error, shutil.move, src_dir, dst)
+        finally:
+            try:
+                os.rmdir(src_dir)
+            except:
+                pass
 
-
+
+
 def test_main():
     test_support.run_unittest(TestShutil)
 
-
 if __name__ == '__main__':
     test_main()
diff --git a/Misc/ACKS b/Misc/ACKS
index 61f857b..3347c6f 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -205,6 +205,7 @@
 Ben Gertzfield
 Dinu Gherman
 Jonathan Giddy
+Johannes Gijsbers
 Michael Gilfix
 Chris Gonnerman
 David Goodger
diff --git a/Misc/NEWS b/Misc/NEWS
index 6d6dfe9..b3096ca 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -340,6 +340,9 @@
 Library
 -------
 
+- Bug #919012: shutil.move() will not try to move a directory into itself.
+  Thanks Johannes Gijsbers.
+
 - Bug #934282: pydoc.stripid() is now case-insensitive.  Thanks Robin Becker.
 
 - Bug #823209:  cmath.log() now takes an optional base argument so that its
