diff --git a/Doc/lib/libitertools.tex b/Doc/lib/libitertools.tex
index 93116ea..d0e1269 100644
--- a/Doc/lib/libitertools.tex
+++ b/Doc/lib/libitertools.tex
@@ -197,9 +197,9 @@
   If \var{start} is non-zero, then elements from the iterable are skipped
   until start is reached.  Afterward, elements are returned consecutively
   unless \var{step} is set higher than one which results in items being
-  skipped.  If \var{stop} is specified, then iteration stops at the
-  specified element position; otherwise, it continues indefinitely or
-  until the iterable is exhausted.  Unlike regular slicing,
+  skipped.  If \var{stop} is not specified or is \code{None}, then iteration
+  continues indefinitely; otherwise, it stops at the specified position.
+  Unlike regular slicing,
   \function{islice()} does not support negative values for \var{start},
   \var{stop}, or \var{step}.  Can be used to extract related fields
   from data where the internal structure has been flattened (for
@@ -208,17 +208,20 @@
 
   \begin{verbatim}
      def islice(iterable, *args):
-         s = slice(*args)
-         next = s.start or 0
-         stop = s.stop
-         step = s.step or 1
+         if args:
+             s = slice(*args)
+             next = s.start or 0
+             stop = s.stop
+             step = s.step or 1
+         else:
+             next, stop, step = 0, None, 1
          for cnt, element in enumerate(iterable):
              if cnt < next:
                  continue
-             if cnt >= stop:
+             if stop is not None and cnt >= stop:
                  break
              yield element
-             next += step
+             next += step             
   \end{verbatim}
 \end{funcdesc}
 
@@ -360,7 +363,7 @@
 
 >>> def pairwise(seq):
 ...     "s -> (s0,s1), (s1,s2), (s2, s3), ..."
-...     return izip(seq, islice(seq,1,len(seq)))
+...     return izip(seq, islice(seq,1,None))
 
 >>> def padnone(seq):
 ...     "Returns the sequence elements and then returns None indefinitely"
