Behave as before with no prefix given to INPUT-PORT->PARSER-BUFFER;
authorTaylor R. Campbell <net/mumble/campbell>
Mon, 25 Aug 2008 21:11:12 +0000 (21:11 +0000)
committerTaylor R. Campbell <net/mumble/campbell>
Mon, 25 Aug 2008 21:11:12 +0000 (21:11 +0000)
don't spin endlessly trying to double 0 until it exceeds the minimum
length.

v7/src/runtime/parser-buffer.scm

index 78d1d14a95c9645b4f2dd338e2119f086126770e..e6ec3e30cbf0afa03dbc653b2f4eaac98c01693d 100644 (file)
@@ -1,6 +1,6 @@
 #| -*-Scheme-*-
 
-$Id: parser-buffer.scm,v 1.23 2008/08/18 06:56:10 cph Exp $
+$Id: parser-buffer.scm,v 1.24 2008/08/25 21:11:12 riastradh Exp $
 
 Copyright (C) 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994,
     1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
@@ -77,15 +77,16 @@ USA.
 
 (define (input-port->parser-buffer port #!optional prefix)
   (guarantee-input-port port 'INPUT-PORT->PARSER-BUFFER)
-  (let ((prefix
-        (if (or (default-object? prefix) (not prefix))
-            (make-wide-string 0)
-            (begin
-              (guarantee-wide-string prefix 'INPUT-PORT->PARSER-BUFFER)
-              prefix))))
-    (let ((n (wide-string-length prefix)))
-      (make-parser-buffer (%grow-buffer prefix n (max min-length n))
-                         0 n 0 0 port #f 0))))
+  (if (or (default-object? prefix)
+         (not prefix)
+         (and (wide-string? prefix)
+              (zero? (wide-string-length prefix))))
+      (make-parser-buffer (make-wide-string min-length) 0 0 0 0 port #f 0)
+      (begin
+       (guarantee-wide-string prefix 'INPUT-PORT->PARSER-BUFFER)
+       (let ((n (wide-string-length prefix)))
+         (make-parser-buffer (%grow-buffer prefix n (max min-length n))
+                             0 n 0 0 port #f 0)))))
 
 (define-integrable min-length 256)
 \f