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

index 658854fc08a23c6b39ac9f5ec1af5596a74294b3..66eeb0ef6b237a2702f3ef9a9bdd15310e50a181 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')