From 098dea8633cfd638ba92d3eb4b2577aca434b074 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
Date: Sat, 24 May 1997 14:38:05 +0000
Subject: [PATCH] Fix core dump on \c.

---
 src/bin/psql/psql.c | 35 ++++++++++++++++++++---------------
 1 file changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/bin/psql/psql.c b/src/bin/psql/psql.c
index aa60a311f6..e91bcd2654 100644
--- a/src/bin/psql/psql.c
+++ b/src/bin/psql/psql.c
@@ -7,7 +7,7 @@
  *
  *
  * IDENTIFICATION
- *    $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.65 1997/05/24 01:45:17 momjian Exp $
+ *    $Header: /cvsroot/pgsql/src/bin/psql/Attic/psql.c,v 1.66 1997/05/24 14:38:05 momjian Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1088,7 +1088,7 @@ HandleSlashCmds(PsqlSettings * settings,
 	optarg = NULL;
 
     blank_loc = strcspn(cmd, " \t");
-    if (blank_loc == 0)
+    if (blank_loc == 0 || !cmd[blank_loc])
 	optarg2 = NULL;
     else
 	optarg2 = cmd + blank_loc + strspn(cmd + blank_loc, " \t");
@@ -1114,17 +1114,20 @@ HandleSlashCmds(PsqlSettings * settings,
     case 'c':{
 	    if (strncmp(cmd, "copy ", strlen("copy ")) == 0)
 		do_copy(optarg2, settings);
-	    else if (strncmp(cmd, "connect ", strlen("connect ")) == 0) {
+	    else if (strncmp(cmd, "connect ", strlen("connect ")) == 0 ||
+		     strcmp(cmd, "connect") == 0 /* issue error message */) {
 		char           *optarg3;
 		int            blank_loc2;
 
-	    	blank_loc2 = strcspn(optarg2, " \t");
-		if (blank_loc2 == 0 || *(optarg2 + blank_loc2) == '\0')
-		    optarg3 = NULL;
-		else {
-	    	    optarg3 = optarg2 + blank_loc2 +
+		if (optarg2) {
+		    blank_loc2 = strcspn(optarg2, " \t");
+		    if (blank_loc2 == 0 || *(optarg2 + blank_loc2) == '\0')
+		    	optarg3 = NULL;
+		    else {
+	    	    	optarg3 = optarg2 + blank_loc2 +
 					strspn(optarg2 + blank_loc2, " \t");
-		    *(optarg2 + blank_loc2) = '\0';
+			*(optarg2 + blank_loc2) = '\0';
+		    }
 		}
 		do_connect(optarg2, optarg3, settings);
 	    }
@@ -1132,13 +1135,15 @@ HandleSlashCmds(PsqlSettings * settings,
 		char           *optarg3;
 		int            blank_loc2;
 
-	    	blank_loc2 = strcspn(optarg, " \t");
-		if (blank_loc2 == 0 || *(optarg + blank_loc2) == '\0')
-		    optarg3 = NULL;
-		else {
-	    	    optarg3 = optarg + blank_loc2 +
+		if (optarg) {
+		    blank_loc2 = strcspn(optarg, " \t");
+		    if (blank_loc2 == 0 || *(optarg + blank_loc2) == '\0')
+		    	optarg3 = NULL;
+		    else {
+	    	    	optarg3 = optarg + blank_loc2 +
 					strspn(optarg + blank_loc2, " \t");
-		    *(optarg + blank_loc2) = '\0';
+			*(optarg + blank_loc2) = '\0';
+		    }
 		}
 		do_connect(optarg, optarg3,  settings);
 	    }
-- 
2.24.1