author | Norm Jacobs <Norm.Jacobs@Oracle.COM> |
Mon, 27 Apr 2015 10:19:50 -0500 | |
changeset 4196 | d697072a92f5 |
parent 1705 | components/ksh93/patches/17851169.patch@f76a8a4838a4 |
child 4268 | d723f8ed85fe |
permissions | -rw-r--r-- |
1705
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
1 |
http://lists.research.att.com/pipermail/ast-developers/2014q1/003809.html |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
2 |
--- |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
3 |
--- a/src/cmd/ksh93/sh/subshell.c |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
4 |
+++ b/src/cmd/ksh93/sh/subshell.c |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
5 |
@@ -234,15 +234,22 @@ Namval_t *sh_assignok(register Namval_t *np,int add) |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
6 |
{ |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
7 |
register Namval_t *mp; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
8 |
register struct Link *lp; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
9 |
- register struct subshell *sp = (struct subshell*)subshell_data; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
10 |
- Shell_t *shp = sp->shp; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
11 |
- Dt_t *dp= shp->var_tree; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
12 |
+ register struct subshell *sp; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
13 |
+ Shell_t *shp; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
14 |
+ Dt_t *dp; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
15 |
Namval_t *mpnext; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
16 |
Namarr_t *ap; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
17 |
int save; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
18 |
+ |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
19 |
+ sp = (struct subshell*)subshell_data; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
20 |
+ |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
21 |
/* don't bother with this */ |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
22 |
- if(!sp->shpwd || np==SH_LEVELNOD || np==L_ARGNOD || np==SH_SUBSCRNOD || np==SH_NAMENOD) |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
23 |
+ if(!sp || !sp->shpwd || np==SH_LEVELNOD || np==L_ARGNOD || np==SH_SUBSCRNOD || np==SH_NAMENOD) |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
24 |
return(np); |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
25 |
+ |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
26 |
+ shp = sp->shp; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
27 |
+ dp = shp->var_tree; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
28 |
+ |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
29 |
if((ap=nv_arrayptr(np)) && (mp=nv_opensub(np))) |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
30 |
{ |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
31 |
shp->last_root = ap->table; |
f76a8a4838a4
17851169 ksh93 core dump in sh_assignok() function
Tomas Klacko <tomas.klacko@oracle.com>
parents:
diff
changeset
|
32 |