diff --git a/Demo/metaclasses/index.html b/Demo/metaclasses/index.html
index af9caa9..eee473a 100644
--- a/Demo/metaclasses/index.html
+++ b/Demo/metaclasses/index.html
@@ -547,7 +547,7 @@
 all class variables<P>
 
 <LI>Implement a different way to store instance variables (e.g. in a
-list kept outside the the instance but indexed by the instance's id())<P>
+list kept outside the instance but indexed by the instance's id())<P>
 
 <LI>Automatically wrap or trap all or certain methods
 
diff --git a/Doc/ext/newtypes.tex b/Doc/ext/newtypes.tex
index 230db9e..743cb5a 100644
--- a/Doc/ext/newtypes.tex
+++ b/Doc/ext/newtypes.tex
@@ -685,7 +685,7 @@
 In this example, we create a list that contains itself. When we delete
 it, it still has a reference from itself. It's reference count doesn't
 drop to zero.  Fortunately, Python's cyclic-garbage collector will
-eventually figure out that that the list is garbage and free it.
+eventually figure out that the list is garbage and free it.
 
 In the second version of the \class{Noddy} example, we allowed any
 kind of object to be stored in the \member{first} or \member{last}
diff --git a/Doc/lib/libprofile.tex b/Doc/lib/libprofile.tex
index f36ebfa..4d62094 100644
--- a/Doc/lib/libprofile.tex
+++ b/Doc/lib/libprofile.tex
@@ -407,7 +407,7 @@
 \code{'name'}).
 
 When more than one key is provided, then additional keys are used as
-secondary criteria when the there is equality in all keys selected
+secondary criteria when there is equality in all keys selected
 before them.  For example, \samp{sort_stats('name', 'file')} will sort
 all the entries according to their function name, and resolve all ties
 (identical function names) by sorting by file name.
diff --git a/Doc/lib/libregex.tex b/Doc/lib/libregex.tex
index bd86db5..93c389a 100644
--- a/Doc/lib/libregex.tex
+++ b/Doc/lib/libregex.tex
@@ -247,7 +247,7 @@
   \code{match()} and \code{search()}.  (Already compiled expression
   objects are not affected.)  The argument is an integer which is the
   OR of several flag bits.  The return value is the previous value of
-  the syntax flags.  Names for the flags are defined in the standard 
+  the syntax flags.  Names for the flags are defined in the standard
   module \code{regex_syntax}\refstmodindex{regex_syntax}; read the
   file \file{regex_syntax.py} for more information.
 \end{funcdesc}
diff --git a/Doc/ref/ref6.tex b/Doc/ref/ref6.tex
index 4e966bf..e3b4427 100644
--- a/Doc/ref/ref6.tex
+++ b/Doc/ref/ref6.tex
@@ -149,7 +149,7 @@
 
 \item
 If the target list is a comma-separated list of targets: The object
-must be a sequence with the same number of items as the there are
+must be a sequence with the same number of items as there are
 targets in the target list, and the items are assigned, from left to
 right, to the corresponding targets.  (This rule is relaxed as of
 Python 1.5; in earlier versions, the object had to be a tuple.  Since
diff --git a/Doc/texinputs/python.sty b/Doc/texinputs/python.sty
index 85fe52f..d8071ee 100644
--- a/Doc/texinputs/python.sty
+++ b/Doc/texinputs/python.sty
@@ -1,5 +1,5 @@
 %
-% python.sty for the Python docummentation  [works only with with Latex2e]
+% python.sty for the Python docummentation  [works only with Latex2e]
 %
 
 \NeedsTeXFormat{LaTeX2e}[1995/12/01]
diff --git a/Doc/whatsnew/whatsnew20.tex b/Doc/whatsnew/whatsnew20.tex
index 86d54d7..1728e1a 100644
--- a/Doc/whatsnew/whatsnew20.tex
+++ b/Doc/whatsnew/whatsnew20.tex
@@ -1000,7 +1000,7 @@
 \method{characters()} method is called for every chunk of character
 data, and so forth.
 
-The advantage of the event-driven approach is that that the whole
+The advantage of the event-driven approach is that the whole
 document doesn't have to be resident in memory at any one time, which
 matters if you are processing really huge documents.  However, writing
 the SAX handler class can get very complicated if you're trying to
diff --git a/Include/abstract.h b/Include/abstract.h
index 9f8b4aa..46aee29 100644
--- a/Include/abstract.h
+++ b/Include/abstract.h
@@ -872,7 +872,7 @@
      PyAPI_FUNC(PyObject *) PyNumber_InPlaceOr(PyObject *o1, PyObject *o2);
 
        /*
-	 Returns the result of bitwise or or o1 and o2, possibly in-place,
+	 Returns the result of bitwise or of o1 and o2, possibly in-place,
 	 or null on failure.  This is the equivalent of the Python
 	 expression: o1 |= o2.
 
diff --git a/Lib/ConfigParser.py b/Lib/ConfigParser.py
index fa6b053..7503ba2 100644
--- a/Lib/ConfigParser.py
+++ b/Lib/ConfigParser.py
@@ -19,7 +19,7 @@
 
 class:
 
-ConfigParser -- responsible for for parsing a list of
+ConfigParser -- responsible for parsing a list of
                 configuration files, and managing the parsed database.
 
     methods:
diff --git a/Lib/Cookie.py b/Lib/Cookie.py
index 3b2592a..a6ca654 100644
--- a/Lib/Cookie.py
+++ b/Lib/Cookie.py
@@ -76,7 +76,7 @@
 Notice that the printable representation of a Cookie is the
 appropriate format for a Set-Cookie: header.  This is the
 default behavior.  You can change the header and printed
-attributes by using the the .output() function
+attributes by using the .output() function
 
    >>> C = Cookie.SmartCookie()
    >>> C["rocky"] = "road"
diff --git a/Lib/asyncore.py b/Lib/asyncore.py
index a38c911..7fb84b4 100644
--- a/Lib/asyncore.py
+++ b/Lib/asyncore.py
@@ -497,7 +497,7 @@
 #
 # After a little research (reading man pages on various unixen, and
 # digging through the linux kernel), I've determined that select()
-# isn't meant for doing doing asynchronous file i/o.
+# isn't meant for doing asynchronous file i/o.
 # Heartening, though - reading linux/mm/filemap.c shows that linux
 # supports asynchronous read-ahead.  So _MOST_ of the time, the data
 # will be sitting in memory for us already when we go to read it.
diff --git a/Lib/distutils/cmd.py b/Lib/distutils/cmd.py
index 7e7a4cd..6e44221 100644
--- a/Lib/distutils/cmd.py
+++ b/Lib/distutils/cmd.py
@@ -148,7 +148,7 @@
         """Set final values for all the options that this command supports.
         This is always called as late as possible, ie.  after any option
         assignments from the command-line or from other commands have been
-        done.  Thus, this is the place to to code option dependencies: if
+        done.  Thus, this is the place to code option dependencies: if
         'foo' depends on 'bar', then it is safe to set 'foo' from 'bar' as
         long as 'foo' still has the same value it was assigned in
         'initialize_options()'.
diff --git a/Lib/email/Message.py b/Lib/email/Message.py
index d4c10df..9f826d8 100644
--- a/Lib/email/Message.py
+++ b/Lib/email/Message.py
@@ -775,7 +775,7 @@
                 newparams.append((pk, pv))
         if not foundp:
             # The original Content-Type header had no boundary attribute.
-            # Tack one one the end.  BAW: should we raise an exception
+            # Tack one on the end.  BAW: should we raise an exception
             # instead???
             newparams.append(('boundary', '"%s"' % boundary))
         # Replace the existing Content-Type header with the new value
diff --git a/Lib/heapq.py b/Lib/heapq.py
index fee7a24..2c30b12 100644
--- a/Lib/heapq.py
+++ b/Lib/heapq.py
@@ -238,7 +238,7 @@
         heap[pos] = heap[childpos]
         pos = childpos
         childpos = 2*pos + 1
-    # The leaf at pos is empty now.  Put newitem there, and and bubble it up
+    # The leaf at pos is empty now.  Put newitem there, and bubble it up
     # to its final resting place (by sifting its parents down).
     heap[pos] = newitem
     _siftdown(heap, startpos, pos)
diff --git a/Lib/ihooks.py b/Lib/ihooks.py
index 4034b01..19faac9 100644
--- a/Lib/ihooks.py
+++ b/Lib/ihooks.py
@@ -18,7 +18,7 @@
 by standard modules os and os.path.  It should be used as the base
 class for other hooks classes.
 
-2) A "module loader" class provides an interface to to search for a
+2) A "module loader" class provides an interface to search for a
 module in a search path and to load it.  It defines a method which
 searches for a module in a single directory; by overriding this method
 one can redefine the details of the search.  If the directory is None,
diff --git a/Lib/mimetypes.py b/Lib/mimetypes.py
index 5784e23..77fdcdf 100644
--- a/Lib/mimetypes.py
+++ b/Lib/mimetypes.py
@@ -65,7 +65,7 @@
             self.read(name, strict)
 
     def add_type(self, type, ext, strict=True):
-        """Add a mapping between a type and and extension.
+        """Add a mapping between a type and an extension.
 
         When the extension is already known, the new
         type will replace the old one. When the type
@@ -269,7 +269,7 @@
     return guess_extension(type, strict)
 
 def add_type(self, type, ext, strict=True):
-    """Add a mapping between a type and and extension.
+    """Add a mapping between a type and an extension.
 
     When the extension is already known, the new
     type will replace the old one. When the type
diff --git a/Lib/ntpath.py b/Lib/ntpath.py
index fcb899b..687d885 100644
--- a/Lib/ntpath.py
+++ b/Lib/ntpath.py
@@ -301,7 +301,7 @@
 # For each directory under top (including top itself, but excluding
 # '.' and '..'), func(arg, dirname, filenames) is called, where
 # dirname is the name of the directory and filenames is the list
-# files files (and subdirectories etc.) in the directory.
+# of files (and subdirectories etc.) in the directory.
 # The func may modify the filenames list, to implement a filter,
 # or to impose a different order of visiting.
 
diff --git a/Lib/os2emxpath.py b/Lib/os2emxpath.py
index 67f00df..09982aa 100644
--- a/Lib/os2emxpath.py
+++ b/Lib/os2emxpath.py
@@ -260,7 +260,7 @@
 # For each directory under top (including top itself, but excluding
 # '.' and '..'), func(arg, dirname, filenames) is called, where
 # dirname is the name of the directory and filenames is the list
-# files files (and subdirectories etc.) in the directory.
+# of files (and subdirectories etc.) in the directory.
 # The func may modify the filenames list, to implement a filter,
 # or to impose a different order of visiting.
 
diff --git a/Lib/pre.py b/Lib/pre.py
index 79fb042..b6dd09b 100644
--- a/Lib/pre.py
+++ b/Lib/pre.py
@@ -607,7 +607,7 @@
         whole match is returned). If a groupN argument is zero, the
         corresponding return value is the entire matching string; if
         it is in the inclusive range [1..99], it is the string
-        matching the the corresponding parenthesized group. If a group
+        matching the corresponding parenthesized group. If a group
         number is negative or larger than the number of groups defined
         in the pattern, an IndexError exception is raised. If a group
         is contained in a part of the pattern that did not match, the
diff --git a/Lib/profile.doc b/Lib/profile.doc
index bf5d8e3..8724484 100644
--- a/Lib/profile.doc
+++ b/Lib/profile.doc
@@ -339,7 +339,7 @@
 basis of a sort (example: "time" or "name").
 
 When more than one key is provided, then additional keys are used as
-secondary criteria when the there is equality in all keys selected
+secondary criteria when there is equality in all keys selected
 before them.  For example, sort_stats('name', 'file') will sort all
 the entries according to their function name, and resolve all ties
 (identical function names) by sorting by file name.
@@ -464,7 +464,7 @@
 There is a fundamental problem with deterministic profilers involving
 accuracy.  The most obvious restriction is that the underlying "clock"
 is only ticking at a rate (typically) of about .001 seconds.  Hence no
-measurements will be more accurate that that underlying clock.  If
+measurements will be more accurate than that underlying clock.  If
 enough measurements are taken, then the "error" will tend to average
 out. Unfortunately, removing this first error induces a second source
 of error...
diff --git a/Lib/rlcompleter.py b/Lib/rlcompleter.py
index de4c024..1d29167 100644
--- a/Lib/rlcompleter.py
+++ b/Lib/rlcompleter.py
@@ -117,7 +117,7 @@
         Assuming the text is of the form NAME.NAME....[NAME], and is
         evaluatable in self.namespace, it will be evaluated and its attributes
         (as revealed by dir()) are used as possible completions.  (For class
-        instances, class members are are also considered.)
+        instances, class members are also considered.)
 
         WARNING: this can still invoke arbitrary C code, if an object
         with a __getattr__ hook is evaluated.
diff --git a/Lib/site.py b/Lib/site.py
index 788a94a..e7b9369 100644
--- a/Lib/site.py
+++ b/Lib/site.py
@@ -10,7 +10,7 @@
 import, this is no longer necessary (but code that does it still
 works).
 
-This will append site-specific paths to to the module search path.  On
+This will append site-specific paths to the module search path.  On
 Unix, it starts with sys.prefix and sys.exec_prefix (if different) and
 appends lib/python<version>/site-packages as well as lib/site-python.
 On other platforms (mainly Mac and Windows), it uses just sys.prefix
diff --git a/Lib/test/test_class.py b/Lib/test/test_class.py
index 3c3ea06..a37f2a4 100644
--- a/Lib/test/test_class.py
+++ b/Lib/test/test_class.py
@@ -202,7 +202,7 @@
     oct(testme)
     hex(testme)
 else:
-    # Jython enforced that the these methods return
+    # Jython enforced that these methods return
     # a value of the expected type.
     print "__int__: ()"
     print "__long__: ()"
diff --git a/Lib/test/test_errno.py b/Lib/test/test_errno.py
index 7869328..6b02e25 100755
--- a/Lib/test/test_errno.py
+++ b/Lib/test/test_errno.py
@@ -34,7 +34,7 @@
           'EUSERS', 'EWOULDBLOCK', 'EXDEV', 'EXFULL']
 
 #
-# This is is a wee bit bogus since the module only conditionally adds
+# This is a wee bit bogus since the module only conditionally adds
 # errno constants if they have been defined by errno.h  However, this
 # test seems to work on SGI, Sparc & intel Solaris, and linux.
 #
diff --git a/Lib/test/test_os.py b/Lib/test/test_os.py
index 028ec08..d5f4774 100644
--- a/Lib/test/test_os.py
+++ b/Lib/test/test_os.py
@@ -1,6 +1,6 @@
 # As a test suite for the os module, this is woefully inadequate, but this
 # does add tests for a few functions which have been determined to be more
-# more portable than they had been thought to be.
+# portable than they had been thought to be.
 
 import os
 import unittest
diff --git a/Lib/test/test_stringprep.py b/Lib/test/test_stringprep.py
index c116adc..4459689 100644
--- a/Lib/test/test_stringprep.py
+++ b/Lib/test/test_stringprep.py
@@ -71,7 +71,7 @@
 # This would generate a hash of all predicates. However, running
 # it is quite expensive, and only serves to detect changes in the
 # unicode database. Instead, stringprep.py asserts the version of
-# of the database.
+# the database.
 
 # predicates = [k for k in dir(stringprep) if k.startswith("in_table")]
 # predicates.sort()
diff --git a/Lib/urllib2.py b/Lib/urllib2.py
index 7124dfb..9f123ab 100644
--- a/Lib/urllib2.py
+++ b/Lib/urllib2.py
@@ -802,7 +802,7 @@
 class AbstractHTTPHandler(BaseHandler):
 
     # XXX Should rewrite do_open() to use the new httplib interface,
-    # would would be a little simpler.
+    # would be a little simpler.
 
     def do_open(self, http_class, req):
         host = req.get_host()
diff --git a/Lib/whichdb.py b/Lib/whichdb.py
index d60284e..deb8a02 100644
--- a/Lib/whichdb.py
+++ b/Lib/whichdb.py
@@ -51,7 +51,7 @@
         except (IOError, _dbmerror):
             pass
 
-    # Check for dumbdbm next -- this has a .dir and and a .dat file
+    # Check for dumbdbm next -- this has a .dir and a .dat file
     try:
         # First check for presence of files
         os.stat(filename + os.extsep + "dat")
diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py
index e67f2f0..20d6e71 100644
--- a/Lib/xmlrpclib.py
+++ b/Lib/xmlrpclib.py
@@ -994,7 +994,7 @@
 # represents a fault condition, this function raises a Fault exception.
 #
 # @param data An XML-RPC packet, given as an 8-bit string.
-# @return A tuple containing the the unpacked data, and the method name
+# @return A tuple containing the unpacked data, and the method name
 #     (None if not present).
 # @see Fault
 
diff --git a/Misc/HISTORY b/Misc/HISTORY
index 329d0b3..b24f897 100644
--- a/Misc/HISTORY
+++ b/Misc/HISTORY
@@ -7053,7 +7053,7 @@
 into python-mode.el.
 
 - The configure script can finally correctly find the readline library in a 
-non-standard location.  The LDFLAGS variable is passed on the the Makefiles 
+non-standard location.  The LDFLAGS variable is passed on the Makefiles 
 from the configure script.
 
 - Shared libraries are now installed as programs (i.e. with executable 
@@ -9278,7 +9278,7 @@
 system by running the script demo/scripts/h2py.py with
 /usr/include/sys/socket.h as input.
 
-cddb: interface to the database used the the CD player
+cddb: interface to the database used by the CD player
 
 torgb: convert various image file types to rgb format (requires pbmplus)
 
diff --git a/Modules/_ssl.c b/Modules/_ssl.c
index 27c3297..b338aea 100644
--- a/Modules/_ssl.c
+++ b/Modules/_ssl.c
@@ -224,7 +224,7 @@
 	Py_END_ALLOW_THREADS
 	SSL_set_fd(self->ssl, Sock->sock_fd);	/* Set the socket for SSL */
 
-	/* If the socket is is non-blocking mode or timeout mode, set the BIO
+	/* If the socket is in non-blocking mode or timeout mode, set the BIO
 	 * to non-blocking mode (blocking is the default)
 	 */
 	if (Sock->sock_timeout >= 0.0) {
diff --git a/Modules/datetimemodule.c b/Modules/datetimemodule.c
index 0d553d4..3de1c65 100644
--- a/Modules/datetimemodule.c
+++ b/Modules/datetimemodule.c
@@ -899,7 +899,7 @@
  * result.  tzinfo must be an instance of the tzinfo class.  If dst()
  * returns None, call_dst returns 0 and sets *none to 1.  If dst()
  & doesn't return None or timedelta, TypeError is raised and this
- * returns -1.  If dst() returns an invalid timedelta for for a UTC offset,
+ * returns -1.  If dst() returns an invalid timedelta for a UTC offset,
  * ValueError is raised and this returns -1.  Else *none is set to 0 and
  * the offset is returned (as an int # of minutes east of UTC).
  */
@@ -4818,7 +4818,7 @@
 
 Because we know z.d said z was in daylight time (else [5] would have held and
 we would have stopped then), and we know z.d != z'.d (else [8] would have held
-and we we have stopped then), and there are only 2 possible values dst() can
+and we would have stopped then), and there are only 2 possible values dst() can
 return in Eastern, it follows that z'.d must be 0 (which it is in the example,
 but the reasoning doesn't depend on the example -- it depends on there being
 two possible dst() outcomes, one zero and the other non-zero).  Therefore
diff --git a/Modules/main.c b/Modules/main.c
index 83721da..2cb2b64 100644
--- a/Modules/main.c
+++ b/Modules/main.c
@@ -154,7 +154,7 @@
 		if (c == 'c') {
 			/* -c is the last option; following arguments
 			   that look like options are left for the
-			   the command to interpret. */
+			   command to interpret. */
 			command = malloc(strlen(_PyOS_optarg) + 2);
 			if (command == NULL)
 				Py_FatalError(
diff --git a/Modules/md5c.c b/Modules/md5c.c
index ee89fec..f9bea0f 100644
--- a/Modules/md5c.c
+++ b/Modules/md5c.c
@@ -141,7 +141,7 @@
 }
 
 /* MD5 finalization. Ends an MD5 message-digest operation, writing the
-  the message digest and zeroing the context.
+  message digest and zeroing the context.
  */
 void
 MD5Final(unsigned char digest[16], MD5_CTX *context)
diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
index f5787c3..a882023 100644
--- a/Modules/posixmodule.c
+++ b/Modules/posixmodule.c
@@ -3953,7 +3953,7 @@
 
 	/* Create new output read handle and the input write handle. Set
 	 * the inheritance properties to FALSE. Otherwise, the child inherits
-	 * the these handles; resulting in non-closeable handles to the pipes
+	 * these handles; resulting in non-closeable handles to the pipes
 	 * being created. */
 	 fSuccess = DuplicateHandle(GetCurrentProcess(), hChildStdinWr,
 				    GetCurrentProcess(), &hChildStdinWrDup, 0,
diff --git a/Modules/pypcre.c b/Modules/pypcre.c
index a6ba17c..6c93326 100644
--- a/Modules/pypcre.c
+++ b/Modules/pypcre.c
@@ -573,7 +573,7 @@
 
 /* #define DEBUG */
 
-/* Use a macro for debugging printing, 'cause that eliminates the the use
+/* Use a macro for debugging printing, 'cause that eliminates the use
 of #ifdef inline, and there are *still* stupid compilers about that don't like
 indented pre-processor statements. I suppose it's only been 10 years... */
 
diff --git a/Modules/socketmodule.c b/Modules/socketmodule.c
index 4a2fb58..427fb29 100644
--- a/Modules/socketmodule.c
+++ b/Modules/socketmodule.c
@@ -105,7 +105,7 @@
 \n\
  [*] not available on all platforms!");
 
-/* XXX This is a terrible mess of of platform-dependent preprocessor hacks.
+/* XXX This is a terrible mess of platform-dependent preprocessor hacks.
    I hope some day someone can clean this up please... */
 
 /* Hacks for gethostbyname_r().  On some non-Linux platforms, the configure
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index dcb43e5..b1c822f 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -5411,7 +5411,7 @@
 	{"__self__",  T_OBJECT, offsetof(superobject, obj), READONLY,
 	 "the instance invoking super(); may be None"},
 	{"__self_class__", T_OBJECT, offsetof(superobject, obj_type), READONLY,
-	 "the type of the the instance invoking super(); may be None"},
+	 "the type of the instance invoking super(); may be None"},
 	{0}
 };
 
diff --git a/PC/pyconfig.h b/PC/pyconfig.h
index cde226e..42ce5da 100644
--- a/PC/pyconfig.h
+++ b/PC/pyconfig.h
@@ -4,7 +4,7 @@
 /* pyconfig.h.  NOT Generated automatically by configure.
 
 This is a manually maintained version used for the Watcom,
-Borland and and Microsoft Visual C++ compilers.  It is a
+Borland and Microsoft Visual C++ compilers.  It is a
 standard part of the Python distribution.
 
 WINDOWS DEFINES:
diff --git a/Python/import.c b/Python/import.c
index abe3a19..50b28ef 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -553,7 +553,7 @@
 
 /* Get the module object corresponding to a module name.
    First check the modules dictionary if there's one there,
-   if not, create a new one and insert in in the modules dictionary.
+   if not, create a new one and insert it in the modules dictionary.
    Because the former action is most common, THIS DOES NOT RETURN A
    'NEW' REFERENCE! */
 
diff --git a/Tools/bgen/bgen/bgenOutput.py b/Tools/bgen/bgen/bgenOutput.py
index 7ba5de3..304a52d 100644
--- a/Tools/bgen/bgen/bgenOutput.py
+++ b/Tools/bgen/bgen/bgenOutput.py
@@ -58,7 +58,7 @@
     VaOutput(format, args)
 
 def VaOutput(format, args):
-    """Call this with a format string and and argument tuple for the format.
+    """Call this with a format string and argument tuple for the format.
 
     A newline is always added.  Each line in the output is indented
     to the proper indentation level -- even if the result of the
diff --git a/Tools/freeze/README b/Tools/freeze/README
index 4adae6b..81be2c8 100644
--- a/Tools/freeze/README
+++ b/Tools/freeze/README
@@ -135,7 +135,7 @@
 at program load time, and are searched by the operating system loader
 before Python can be started. Under Windows, the environment
 variable PATH is consulted, and under Unix, it may be the
-the environment variable LD_LIBRARY_PATH and/or the system
+environment variable LD_LIBRARY_PATH and/or the system
 shared library cache (ld.so). An additional preferred directory for
 finding the dynamic libraries is built into the .dll or .so files at
 compile time - see the LIB_RUNTIME_DIR variable in the Tcl makefile. 
diff --git a/Tools/scripts/fixdiv.py b/Tools/scripts/fixdiv.py
index 70d5f19..2bbd3d5 100755
--- a/Tools/scripts/fixdiv.py
+++ b/Tools/scripts/fixdiv.py
@@ -56,7 +56,7 @@
 - 'No conclusive evidence on line N', line marked by '*':
 
   A / operator was found for which no warnings were seen.  This could
-  be code that was never executed, or code that was only executed with
+  be code that was never executed, or code that was only executed
   with user-defined objects as arguments.  You will have to
   investigate further.  Note that // can be overloaded separately from
   /, using __floordiv__.  True division can also be separately
