OSDN Git Service

Prevent simple_prompt() from locking up in a tight loop at stdin EOF.
authorTom Lane <tgl@sss.pgh.pa.us>
Mon, 27 Nov 2000 01:28:40 +0000 (01:28 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Mon, 27 Nov 2000 01:28:40 +0000 (01:28 +0000)
src/bin/psql/common.c

index 658854f..66eeb0e 100644 (file)
@@ -3,7 +3,7 @@
  *
  * Copyright 2000 by PostgreSQL Global Development Group
  *
- * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.25 2000/11/13 23:37:53 momjian Exp $
+ * $Header: /cvsroot/pgsql/src/bin/psql/common.c,v 1.26 2000/11/27 01:28:40 tgl Exp $
  */
 #include "postgres.h"
 #include "common.h"
@@ -217,12 +217,14 @@ simple_prompt(const char *prompt, int maxlen, bool echo)
        if (length > 0 && destination[length - 1] != '\n')
        {
                /* eat rest of the line */
-               char            buf[512];
+               char            buf[128];
+               int                     buflen;
 
                do
                {
-                       fgets(buf, 512, stdin);
-               } while (buf[strlen(buf) - 1] != '\n');
+                       fgets(buf, sizeof(buf), stdin);
+                       buflen = strlen(buf);
+               } while (buflen > 0 && buf[buflen - 1] != '\n');
        }
 
        if (length > 0 && destination[length - 1] == '\n')