author | Lijo George<lijo.x.george@oracle.com> |
Sun, 10 May 2015 11:59:46 -0700 | |
changeset 4268 | d723f8ed85fe |
permissions | -rw-r--r-- |
4268
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
1 |
This fix is from the community, details in the following location. |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
2 |
http://lists.research.att.com/pipermail/ast-users/2013q4/004481.html |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
3 |
--- |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
4 |
--- a/src/cmd/ksh93/sh/streval.c 2014-01-22 10:39:11.075964500 +0100 |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
5 |
+++ b/src/cmd/ksh93/sh/streval.c 2014-01-22 13:21:35.999184260 +0100 |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
6 |
@@ -366,13 +366,17 @@ |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
7 |
num = (Sflong_t)(sp[-1]) / (Sflong_t)(num); |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
8 |
break; |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
9 |
case A_LSHIFT: |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
10 |
- if(tp[-1]==2) |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
11 |
+ if((long)num >= CHAR_BIT*sizeof(Sfulong_t)) |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
12 |
+ num = 0; |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
13 |
+ else if(tp[-1]==2) |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
14 |
num = U2F((Sfulong_t)(sp[-1]) << (long)(num)); |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
15 |
else |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
16 |
num = (Sflong_t)(sp[-1]) << (long)(num); |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
17 |
break; |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
18 |
case A_RSHIFT: |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
19 |
- if(tp[-1]==2) |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
20 |
+ if((long)num >= CHAR_BIT*sizeof(Sfulong_t)) |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
21 |
+ num = 0; |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
22 |
+ else if(tp[-1]==2) |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
23 |
num = U2F((Sfulong_t)(sp[-1]) >> (long)(num)); |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
24 |
else |
d723f8ed85fe
PSARC/2014/162 ksh93 update to 2012-08-01
Lijo George<lijo.x.george@oracle.com>
parents:
diff
changeset
|
25 |
num = (Sflong_t)(sp[-1]) >> (long)(num); |