diff --git a/src/bin/pg_ctl/pg_ctl.c b/src/bin/pg_ctl/pg_ctl.c
index 7a9e29874a8d9c623b545b40d6316402dca27fab..162b435b80083bc9bb56c008c79dbb6a82ba785e 100644
--- a/src/bin/pg_ctl/pg_ctl.c
+++ b/src/bin/pg_ctl/pg_ctl.c
@@ -4,7 +4,7 @@
  *
  * Portions Copyright (c) 1996-2004, PostgreSQL Global Development Group
  *
- * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.48 2004/11/27 18:51:05 tgl Exp $
+ * $PostgreSQL: pgsql/src/bin/pg_ctl/pg_ctl.c,v 1.49 2004/12/06 01:09:20 neilc Exp $
  *
  *-------------------------------------------------------------------------
  */
@@ -1289,10 +1289,10 @@ main(int argc, char **argv)
 			{
 				case 'D':
 					{
-						char	   *pgdata_D = xmalloc(strlen(optarg));
+						char	   *pgdata_D;
 						char	   *env_var = xmalloc(strlen(optarg) + 8);
 
-						strcpy(pgdata_D, optarg);
+						pgdata_D = xstrdup(optarg);
 						canonicalize_path(pgdata_D);
 						snprintf(env_var, strlen(optarg) + 8, "PGDATA=%s",
 								 pgdata_D);