components/ksh93/patches/105-CR7032068.patch
author Lijo George<lijo.x.george@oracle.com>
Thu, 23 Feb 2017 01:05:08 -0800
changeset 7683 7955769fefe6
parent 5129 5431772f7235
permissions -rw-r--r--
20855453 ksh93 echo displaying wrong variable value due to missing EIO handling
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
5129
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
     1
This patch has been developed inhouse. This fixes a Solaris
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
     2
specific issue and has not been submitted to the community.
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
     3
--- INIT.2012-08-01.old/src/cmd/ksh93/sh/macro.c	2015-02-24 13:25:19.363200741 -0800
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
     4
+++ INIT.2012-08-01/src/cmd/ksh93/sh/macro.c	2015-03-05 11:11:46.044880541 -0800
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
     5
@@ -1086,7 +1086,7 @@ static int varsub(Mac_t *mp)
805
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
     6
 {
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
     7
 	register int	c;
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
     8
 	register int	type=0; /* M_xxx */
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
     9
-	register char	*v,*argp=0;
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    10
+	register char	*v, *new_v = NULL, *argp=0;
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    11
 	register Namval_t	*np = NIL(Namval_t*);
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    12
 	register int 	dolg=0, mode=0;
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    13
 	Lex_t		*lp = (Lex_t*)mp->shp->lex_context;
5129
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
    14
@@ -1439,6 +1439,7 @@ retry1:
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
    15
 				if((mp->let || (mp->arith&&nv_isattr(np,(NV_LJUST|NV_RJUST|NV_ZFILL)))) && !nv_isattr(np,NV_INTEGER) && (offset==0 || isspace(c) || strchr(",.+-*/=%&|^?!<>",c)))
805
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    16
 					mp->zeros = 1;
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    17
 			}
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    18
+			new_v = v = strdup(v);
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    19
 			if(savptr==stakptr(0))
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    20
 				stkseek(stkp,offset);
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    21
 			else
5129
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
    22
@@ -1989,6 +1990,8 @@ retry2:
805
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    23
 	}
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    24
 	if(np)
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    25
 		nv_close(np);
5129
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
    26
+	if (new_v)
805
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    27
+		free(new_v);
5129
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
    28
 	if(pattern)
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
    29
 		free(pattern);
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
    30
 	if(repstr)
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
    31
@@ -1997,6 +2000,8 @@ retry2:
5431772f7235 PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents: 4305
diff changeset
    32
 		free(idx);
805
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    33
 	return(1);
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    34
 nosub:
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    35
+	if (new_v)
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    36
+		free(new_v);
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    37
 	if(type==M_BRACE && sh_lexstates[ST_NORM][c]==S_BREAK)
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    38
 	{
23c55a2f8a8e 7165565 ksh93 in userland misses several bug fixes made in ON
Edwin Beasant <Edwin.Beasant@oracle.com>
parents:
diff changeset
    39
 		fcseek(-1);