Author: markt
Date: Tue Sep 22 10:51:14 2015
New Revision: 1704572

URL: http://svn.apache.org/viewvc?rev=1704572&view=rev
Log:
Correct regression in previous fix for 
https://bz.apache.org/bugzilla/show_bug.cgi?id=57136
\$ should be an escape for $ in JSP.
\${ should be an escape for ${ only in EL.
EL rules only apply within an EL expression. The JSP rules apply everywhere 
else up to and including the ${...} surrounding the expression.

Modified:
    tomcat/tc7.0.x/trunk/   (props changed)
    tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/AttributeParser.java
    tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java
    tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java
    tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspReader.java
    tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Parser.java
    tomcat/tc7.0.x/trunk/test/org/apache/el/TestELInJsp.java
    
tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java
    tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java
    tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestParser.java
    tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45427.jsp
    tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451.jspf
    tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451a.jsp
    tomcat/tc7.0.x/trunk/test/webapp-3.0/el-method.jsp
    tomcat/tc7.0.x/trunk/test/webapp-3.0/el-misc.jsp
    tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml

Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Tue Sep 22 10:51:14 2015
@@ -1,2 +1,2 @@
-/tomcat/tc8.0.x/trunk:1636525,1637336,1637685,1637709,1638726,1640089,1640276,1640349,1640363,1640366,1640642,1640672,1640674,1640689,1640884,1641001,1641065,1641067,1641375,1641638,1641723,1641726,1641729-1641730,1641736,1641988,1642669-1642670,1642698,1642701,1643205,1643215,1643217,1643230,1643232,1643273,1643285,1643329-1643330,1643511,1643513,1643521,1643539,1643571,1643581-1643582,1643635,1643655,1643738,1643964,1644018,1644333,1644954,1644992,1645014,1645360,1645456,1645627,1645642,1645686,1645903-1645904,1645908-1645909,1645913,1645920,1646458,1646460-1646462,1646735,1646738-1646741,1646744,1646746,1646748-1646755,1646757,1646759-1646760,1647043,1648816,1651420-1651422,1651844,1652926,1652939-1652940,1652973,1653798,1653817,1653841,1654042,1654161,1654736,1654767,1654787,1656592,1659907,1662986,1663265,1663278,1663325,1663535,1663567,1663679,1663997,1664175,1664321,1664872,1665061,1665086,1666027,1666395,1666503,1666506,1666560,1666570,1666581,1666759,1666967,1666988,1667553
 
-1667555,1667558,1667617,1667633,1667637,1667747,1667767,1667873,1668028,1668137,1668634,1669432,1669801,1669840,1669895-1669896,1670398,1670435,1670592,1670605-1670607,1670609,1670632,1670720,1670725,1670727,1670731,1671114,1672273,1672285,1673759,1674220,1674295,1675469,1675488,1675595,1675831,1676232,1676367-1676369,1676382,1676394,1676483,1676556,1676635,1678178,1679536,1679988,1680256,1681124,1681182,1681730,1681840,1681864,1681869,1682010,1682034,1682047,1682052-1682053,1682062,1682064,1682070,1682312,1682325,1682331,1682386,1684367,1684385,1685759,1685774,1685827,1685892,1687341,1688904,1689358,1689657,1692850,1693093,1693108,1693324,1694060,1694115,1694291,1694427,1694431,1694503,1694549,1694789,1694873,1694881,1695356,1695372,1695823-1695825,1696200,1696281,1696379,1696468,1700608,1700871,1700897,1700978,1701094,1701124,1701608,1701668,1701676,1701766,1701944,1702248,1702252,1702314,1702390,1702723,1702725,1702728,1702730,1702733,1702735,1702737,1702739,1702742,1702744,1702
 
748,1702751,1702754,1702758,1702760,1702763,1702766,1703949,1704253,1704291,1704321-1704322,1704325
-/tomcat/trunk:1156115-1157160,1157162-1157859,1157862-1157942,1157945-1160347,1160349-1163716,1163718-1166689,1166691-1174340,1174342-1175596,1175598-1175611,1175613-1175932,1175934-1177783,1177785-1177980,1178006-1180720,1180722-1183094,1183096-1187753,1187755,1187775,1187801,1187806,1187809,1187826-1188312,1188314-1188401,1188646-1188840,1188842-1190176,1190178-1195223,1195225-1195953,1195955,1195957-1201238,1201240-1203345,1203347-1206623,1206625-1208046,1208073,1208096,1208114,1208145,1208772,1209194-1212125,1212127-1220291,1220293,1220295-1221321,1221323-1222329,1222332-1222401,1222405-1222795,1222850-1222950,1222969-1225326,1225328-1225463,1225465,1225627,1225629-1226534,1226536-1228908,1228911-1228923,1228927-1229532,1229534-1230766,1230768-1231625,1231627-1233414,1233419-1235207,1235209-1237425,1237427,1237429-1237977,1237981,1237985,1237995,1238070,1238073,1239024-1239048,1239050-1239062,1239135,1239256,1239258-1239485,1239785-1240046,1240101,1240106,1240109,1240112,1240114
 
,1240116,1240118,1240121,1240329,1240474-1240850,1240857,1241087,1241160,1241408-1241822,1241908-1241909,1241912-1242110,1242371-1292130,1292134-1292458,1292464-1292670,1292672-1292776,1292780-1293392,1293397-1297017,1297019-1297963,1297965-1299820,1300108,1300111-1300460,1300520-1300948,1300997,1301006,1301280,1302332,1302348,1302608-1302610,1302649,1302837,1303138,1303163,1303338,1303521,1303587,1303698,1303803,1303852,1304011,1304035,1304037,1304135,1304249,1304253,1304260,1304271,1304275,1304468,1304895,1304930-1304932,1305194,1305943,1305965,1306556,1306579-1306580,1307084,1307310,1307511-1307512,1307579,1307591,1307597,1310636,1310639-1310640,1310642,1310701,1311212,1311995,1327617,1327670,1331766,1333161,1333173,1333827,1334787,1335026,1335257,1335547,1335692,1335711,1335731,1336515,1336813,1336864,1336868,1336884,1337419,1337426,1337546,1337572,1337591-1337595,1337643,1337707,1337719,1337734,1337741,1337745,1338151-1338154,1338178,1342027,1342029,1342315,1342320,1342476,1342
 
498,1342503,1342717,1342795,1342805,1343044-1343046,1343335,1343394,1343400,1343629,1343708,1343718,1343895,1344063,1344068,1344250,1344266,1344515,1344528,1344612,1344629,1344725,1344868,1344890,1344893,1344896,1344901,1345020,1345029,1345039,1345287-1345290,1345294,1345309,1345325,1345357,1345367,1345579-1345580,1345582,1345688,1345699,1345704,1345731-1345732,1345737,1345744,1345752,1345754,1345779,1345781,1345846,1346107,1346365,1346376,1346404,1346510,1346514,1346519,1346581,1346635,1346644,1346683,1346794,1346885,1346932,1347034,1347047,1347087,1347108-1347109,1347583,1347737,1348105,1348357,1348398,1348425,1348461-1348495,1348498,1348752,1348762,1348772,1348776,1348859,1348968,1348973,1348989,1349007,1349237,1349298,1349317,1349410,1349473,1349539,1349879,1349887,1349893,1349922,1349984,1350124,1350241,1350243,1350294-1350295,1350299,1350864,1350900,1351010,1351054,1351056,1351068,1351134-1351135,1351148,1351259,1351604,1351636-1351640,1351991,1351993,1352011,1352056,1352059,1
 
352661,1352663,1352788,1352799,1353087,1353125,1353240,1353261,1353414,1353468,1353501,1353581,1353708,1354137,1354170,1354197,1354255,1354362,1354375,1354469,1354664,1354685,1354817,1354847,1354856,1355726,1355810,1356006-1356007,1356014,1356045,1356125,1356422,1356505,1356898,1357042,1357401,1357407,1358586,1358590,1358612-1358613,1359102,1359340,1359981,1360059,1360455,1360460,1360838,1360847,1360892,1360942,1361263,1361430,1361754-1361755,1361762,1361769,1361772,1361962,1361982,1361985,1361991,1364141,1364149,1364411-1364412,1364448,1366708,1366720,1366729,1366734,1366910,1366945,1366953,1366959,1367214,1370346,1370364,1370373,1370386,1370473,1370537,1370549,1370553,1370879,1370916,1370958,1370960,1370973,1371017,1371283,1371336,1371620,1371812,1371823,1371896,1371976,1371978,1371995,1371999,1372131,1372152,1372156,1372390,1373003,1373080,1373142,1373488,1373578,1373618,1373622,1373666,1373985,1373987,1373990,1373993,1374000,1374019,1374086,1374823,1376994,1377078,1377292,137731
 
1,1377342,1377433,1377444,1377516,1377518-1377519,1377532,1377535,1377544,1377689,1377785,1377794,1377811,1377824,1377827,1377831,1377852-1377853,1377887,1377900,1378322,1378361,1378394,1378699,1378715,1378818,1378868,1378918,1379047,1379090,1379178,1379206,1379213,1379418,1379580,1379590,1379639,1379647,1379649,1379665,1379733,1379735,1380066,1380073,1380075,1380376,1380635,1380637,1380838,1381411,1381623,1382314,1382343,1382366,1382515,1382832,1382842,1384051,1384055,1384063,1384068-1384069,1385336,1387937,1388709,1388890,1390882,1392098,1392619,1393071,1393115,1396615,1396723,1397086,1397464,1397466,1397472,1397482,1397484,1397839,1397868,1397944,1397950,1397953,1397957,1397960,1397962,1397964,1397969,1397971-1397974,1397976-1397980,1397985,1397988-1397989,1398089,1398107,1398109-1398110,1398112,1399022,1401472,1401792,1401808,1401814,1402113,1402122,1402345,1402348,1402350,1402428,1402573,1402576,1402600-1402601,1402622,1402643,1402683,1402705,1402837,1402855,1403099,1403468,140
 
4374,1404658,1404704,1404773,1404917-1404918,1405133,1405168,1405321,1405353,1405357,1405364,1405397,1405399-1405400,1405415,1405435,1405676,1405681,1406456,1406481,1406526,1407595,1407619,1408043,1408148,1408154,1408156,1408159,1408163-1408165,1408248,1408438,1408504,1408513-1408517,1408562-1408565,1408714,1408721,1408739,1408750,1408774,1408792,1408872-1408876,1408906,1408934,1409007,1409030,1410466,1410545,1410609,1410611,1410632,1410714,1410742,1410763-1410764,1410766,1411585,1411993,1412575,1413552,1413556,1413562,1414053,1414113,1414215,1414889,1415177-1415179,1415186,1416458,1416481,1416501,1416529,1416534-1416535,1416658,1417201,1417224,1417282,1417347-1417348,1417353,1417363,1417365,1417370-1417372,1417463,1417465,1417467,1417469,1417476,1424894,1425502,1425564,1425628,1426662,1427013,1427757,1427784,1427804,1427846,1428010,1428079,1428283,1428355,1428403,1428643,1428869,1428959,1428993,1429123,1429153,1429167,1429173,1429179-1429180,1429182,1429356,1429687,1429745,1429784,
 
1429836,1429863,1429946,1429969,1430079,1430147,1430165,1430445,1430448,1430481,1430487,1430508,1430550,1430567,1430771,1430773,1430775,1430791,1430799,1430806,1430809,1430921,1431164,1431171,1431206,1431221,1431293,1431298,1431302,1431308,1431310,1431320,1431661,1431920,1431990,1432517,1432867,1433976,1434403,1434428,1434438,1434447,1434456,1434463,1434500,1434598,1434660,1434685,1434725,1434757,1434882,1435126,1435505,1435509,1435600,1435606,1435636,1435642,1435759-1435760,1435765,1435767,1437317,1437337,1437505,1437637,1437649,1437743,1437891,1437897,1437903,1438411,1438463,1439054,1439334,1439434,1439442,1439445,1439667,1440095,1440622,1440911,1441342,1441348,1441403,1441416,1441428,1441807,1441895,1441916,1441920,1443350,1443405,1443427,1445111,1445125,1445190,1445208,1445212,1445328,1445337,1445520,1446108,1446137,1446357,1446612,1446640,1446650,1447012,1447178,1447791,1447817-1447818,1448117,1448121,1448125,1448679,1448826,1449225,1449406,1450990,1451053,1451061,1451105,14514
 
08,1451434,1451769,1451938-1451939,1451947,1451955-1451956,1452295,1452501,1452707,1452719,1452721,1452752,1453105,1453112,1453435,1453439,1453490,1453544,1453549,1453621,1454828,1454832,1454953,1455344,1455854,1455973,1456083,1456440,1456453,1456491,1456494,1456657,1456666,1456678,1456706,1456713,1456716,1456721,1456740,1456762,1456766,1456822,1456844,1456863,1456872,1456882,1456885,1456895,1456899,1456904,1456916,1456920,1456926,1456932,1456959,1456963,1456970,1457299,1457301,1457362,1457382,1457402,1457452,1457748,1457968,1458187,1458192,1458200,1458221,1458562,1458564-1458565,1458694,1458726,1458738-1458739,1459010,1459028,1459031,1459061,1459074-1459075,1459085,1459218,1459223,1459289,1459389,1459523-1459524,1459673,1459681,1459761,1459769,1459933,1460107,1460115,1460234,1460313,1460330,1460342,1460533,1460633,1460679,1460873,1461026,1461110,1461341,1461349,1461849,1464781,1465795,1465807,1466051,1466072,1466106,1467091,1468415,1470400,1470435,1470765,1471371,1471632,1475750,14
 
75791,1475900,1475930,1475968,1476761,1476805,1476815,1476972,1477051,1478857,1479175,1479179,1479248,1479482,1479951,1481164,1481835,1482115,1482288,1482309,1482311,1482313,1482321,1482591,1482720,1482723,1482799,1482835,1482854,1483104,1483229,1483288,1483360-1483361,1483390,1483552,1483554,1483679,1483743-1483744,1483786-1483787,1483816-1483817,1483949,1484253,1484592,1484780,1484786,1484861-1484862,1484959,1485114,1485489,1485495,1485611,1485847,1485862,1486062,1486134,1486217,1486294,1486443,1486834,1486861,1486875,1486890,1486939,1487862,1487882,1488151,1488793,1489170,1489195-1489196,1489201,1489385,1489390,1489405,1489437,1489536,1489546,1489610,1489633,1489648,1489738,1489812,1489886,1491485,1491596,1491709,1491841,1491890,1491940,1491942,1492307,1492336,1492343,1492358,1492555,1492570,1493011,1493013-1493014,1493071,1493113,1493740,1493801,1493910,1494044,1494048,1494051,1494056,1494143,1495015,1495043,1495154,1495197,1495880,1495886,1496061,1496732,1496734,1497474,1497538
 
,1497754,1498340,1498363,1498368,1498409,1498475,1498482,1498498,1498669,1498698,1498808,1499371,1499388,1499513,1499953,1500003,1500062,1500371,1500380,1500577,1500590,1500663,1501176,1501266,1501304,1501719,1501738,1501823,1501910,1501927,1501929,1502254,1502349,1503851,1505843,1505929,1506053,1507013,1507052,1507096,1507870,1507872,1508196,1508259,1508346,1509128,1509151,1509156,1509161,1509806,1510246,1510271,1510488,1511212,1511217,1511434,1512034,1513025,1513148-1513149,1513665,1514281,1514291,1514305,1514368,1514470,1514485-1514486,1515841,1515926,1516113,1516295,1516419,1516710,1516953,1517536,1517898,1517941,1517970,1517980,1518189,1518210,1518328,1518381,1518536,1518540,1518578,1518581,1518589,1519611,1519623,1519627,1520273,1520349,1520632,1520655,1521023,1521025,1521027,1521030,1521032,1521034,1521040,1521043,1521049-1521050,1521059-1521061,1521073,1521075,1521271,1521276,1521444,1521687,1521829,1521831,1521834-1521835,1521837,1521839-1521840,1522016,1523555,1523646-1523
 
647,1523674,1523781,1523788,1523830,1523955,1523958,1523964,1523982,1524078,1524558,1524652,1524657,1524668,1524683,1524687,1524707,1524719,1524727,1524761,1524978,1524984,1525593,1525696,1526043,1526052,1526730,1527480,1527493,1527727-1527728,1527730-1527733,1528060,1528166,1528169,1528171-1528172,1528248,1528369,1528383,1528407,1528424,1528855,1529149,1529181,1529317,1529546,1529549,1529787,1530057,1530081,1530103,1530213,1530296,1530298,1530325,1530342,1530348,1530353,1530397,1530418,1530421,1530423,1530426,1530445,1530574,1530599,1530632,1530791,1530822,1530866,1530875,1530909,1530989,1531087,1531099,1531130,1531138,1531156,1531161,1531271,1531312,1531600,1532036,1532269,1532286,1532373,1532437,1532445,1532498-1532501,1532506,1532544,1532622,1532627,1532718-1532722,1532765-1532766,1533048-1533049,1533117,1533312,1533347,1533962,1533980,1534165,1534418,1534540,1534543-1534544,1534612,1534616,1534619,1534727,1534744,1534846,1536298,1536337,1536520,1536624,1536632,1536735,1536834,1
 
536848,1536850,1536852,1537041,1537057,1537073,1537404,1537835,1538533,1538781,1538798,1538833,1538921,1538923-1538924,1539133,1539157,1539173,1539180,1539445,1539452,1539702,1539716,1539887,1539953,1540374,1540383-1540386,1540396-1540398,1540400-1540413,1540539,1540641,1540647,1540670,1540687,1540765,1540807,1542267,1542339,1542769,1542841,1542845,1542856,1543383,1543753,1543772,1543815-1543817,1543897,1543943,1543948,1544072,1544075,1544082,1544165,1544208,1544210,1544453,1544455,1544460,1544472,1544589,1544593,1544606,1544679,1545075,1545078,1545082,1545213,1545215,1545261,1545284,1545288,1545377,1545416,1545471,1545480,1545558,1545619,1545665,1545750,1545799,1545814,1545832,1545847,1545863,1546172,1546372,1546382,1546631,1546656,1547032,1547760,1548169,1548182-1548183,1548185,1548498,1548695,1548961,1548966,1549522,1549525,1549528,1549909,1550387,1550541,1550743,1550920,1551298,1551300,1551323,1551481-1551482,1551953,1552042,1552071,1552080,1552287,1552804,1553126,1553608,155365
 
0,1555163,1556725,1556783,1556788,1556807,1556823,1556836,1556957,1557082,1557747,1557752,1558129,1558355,1558811,1559081,1559113,1559134,1559397,1559419,1559549-1559550,1559561-1559562,1559573,1559662,1559697,1559707,1559798,1560017,1560158,1560177,1560212-1560213,1560784,1560810,1560817,1560838,1560850,1560856,1560922,1560948,1561025,1561054-1561065,1561067-1561070,1561072-1561075,1561083,1561085,1561093-1561094,1561098,1561101,1561104,1561106,1561114-1561116,1561121-1561123,1561126-1561128,1561131-1561133,1561135-1561136,1561138,1561140,1561143-1561146,1561148-1561157,1561160-1561162,1561164-1561176,1561178-1561182,1561185-1561188,1561190-1561192,1561195,1561623,1561635,1561640,1561732,1562411,1562458,1562581,1562597,1562742,1562746,1563206,1563989,1564299,1564309,1564312,1564398,1564414,1564461,1564742-1564746,1565300-1565416,1565451,1565788,1566693,1566699,1567144,1567382,1567404,1567429,1567580,1567634,1567993,1568768,1568779-1568780,1568803,1568828,1568921,1568926,1568936,156
 
9398,1569459,1569735,1569755,1570114,1570120,1570176,1570547,1570601,1570629,1570713,1571196,1571725,1572574,1574004,1574479,1574923,1574936,1574943,1575012,1575262,1575545,1575885,1575910,1576104,1576271,1576288,1576628,1576722,1576768,1576810,1576908,1576923,1577182,1577195,1577315,1577324,1577463,1577544,1577557,1577565,1577581,1577714,1577873,1577944,1578309,1578329,1578337,1578610-1578611,1578636,1578810,1578812-1578813,1578817,1579174,1579214-1579215,1579626,1580030,1580080,1580194,1580514,1580598,1580658,1580821,1580849,1580869,1581061,1581529,1582009,1582064,1582453,1584915,1584922,1586644,1586658,1586890,1586894,1586951,1586959,1586961,1587272,1587378-1587379,1587723,1587859,1587865,1587870,1587886,1588102,1588193,1588197,1588269,1588462,1589035,1589039,1589043,1589100,1589102,1589165-1589166,1589170,1589523,1589630,1589633,1589668,1589698,1589726,1589737-1589738,1589763,1589837,1589842,1589967,1589980,1590018,1590060,1590076,1590120,1590128,1590283,1590300,1590302,1590322,
 
1590329,1590339,1590345,1590377,1590402,1590422,1590438,1590451,1590461,1590471,1590474,1590479,1590604,1590635,1590638,1590646,1590648,1590801,1590835,1590842,1590911,1593132,1593189,1593200,1593259,1593261,1593284,1593335,1593356,1593387,1593421,1593506,1593621,1593697,1593773,1593800,1593834,1593877,1593940,1593994,1594229,1594393,1594436,1594730,1594924,1595171,1595230,1595285,1595289,1595331,1595365,1595690,1595887,1595898,1596081,1596141,1596189,1596275,1596390,1596971,1597532,1597541,1597572-1597573,1597652,1597753-1597755,1597759,1597855,1598153,1598242,1598248,1598266-1598267,1598304,1598307,1598310-1598311,1598313,1599393,1599395,1599460,1599479,1599500,1599558,1599738-1599739,1600109,1600162,1600408,1600449,1600495,1600501,1600579-1600580,1600743,1600833,1600839,1600862,1600899,1600955,1600963,1600965,1600978,1600984,1601329-1601330,1601332,1601785,1601796,1601850,1601855,1601886,1601977,1602046,1602189,1602198,1602452,1602521,1602583,1602694,1602831,1602842,1602844,16028
 
51,1602858,1602865,1602956,1603591,1603621,1603770,1603775,1603779,1603783,1603947,1604024,1604165,1604484-1604496,1604605,1604661,1604768,1604776,1604781,1604788,1604810,1604818,1604822,1605054,1605061,1605066,1605402,1605417,1605454,1605528,1605821,1605823,1605890-1605891,1606072,1606103,1606114,1606653,1607592,1607675,1607740,1607930-1607931,1607934,1608301,1608428,1608443,1608481,1608645,1608963,1609061,1609175,1609334,1609593,1609920,1611506,1614163,1614169,1614179,1614197,1615710,1615724,1615876,1615911,1615947,1616441,1616452,1616458,1617362,1617365,1617383,1617445,1617456,1617461,1617469-1617470,1618112,1618169,1618565,1618688,1618704,1618830,1618832-1618835,1619056,1619106,1619114,1619361-1619362,1619583,1619585,1619738,1619742,1620743,1620915,1620917,1621698,1621725-1621727,1621729,1621731,1621929,1621975,1622163,1622187,1622228,1622233,1622251,1622259,1622263,1622297,1622312,1622342,1622470,1622713,1623236,1623384,1623392,1623685,1623693,1623695,1623779,1624110,1624112,16
 
24115-1624116,1624119,1624122,1624124,1624126,1624129-1624130,1624132-1624133,1624135,1624139,1624142-1624143,1624147,1624150,1624152,1624155-1624157,1624162-1624165,1624220,1624233,1624235,1624246-1624247,1624252,1624254,1624396,1624408,1624422,1624476,1624486-1624487,1624497-1624498,1624542,1624563-1624565,1624568-1624569,1624571,1624573,1624580,1624583,1624586,1624588,1624592,1624598,1624605,1624614,1624636,1624642,1624645,1624647-1624648,1624655,1624657,1624679,1624959,1624984,1625501,1625504,1625563,1625599,1625842,1625854,1626579,1626741,1626747-1626748,1626764-1626765,1626779,1626893,1626905,1626991,1627033,1627296,1627323,1627370,1627525,1627531,1627569,1627629,1628517,1628524,1628541,1628984,1629293,1629906,1630065,1630088,1630092,1630094,1630110,1630194,1630199,1630203,1630208-1630210,1630216,1630375,1630407,1631347,1631381,1631568,1631628,1631717,1631730,1631817-1631818,1631839,1631852,1631987,1631992-1631993,1632251,1632290,1632307,1632411,1632423-1632425,1632512,1632523
 
,1632584,1632600-1632601,1632604,1632965,1632975,1632988,1633128,1633342,1633346,1633369,1633447-1633448,1633500,1633688,1633785,1633824-1633825,1633936,1633974,1634229,1634250,1634257-1634258,1634260,1634312,1634326-1634327,1634329,1634690,1635215,1635301,1635308,1635310,1636524,1637331,1637684,1637695,1638720-1638725,1639653,1640083,1640088,1640275,1640322,1640347,1640361,1640365,1640652,1640655-1640658,1640688,1640700-1640883,1641000,1641058,1641064,1641374,1641634,1641656-1641692,1641707-1641718,1641721-1641722,1641735,1641981,1642327,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643121,1643206,1643209-1643210,1643216,1643270,1643283,1643309-1643310,1643536,1643570,1643634,1643654,1643675,1643733,1643761,1643963,1644017,1644321,1644529,1644535,1644989,1645011,1645357-1645358,1645455,1645486,1645488,1645626,1645641,1645685,1645743,1645763,1646098-1646106,1646178,1646304,1646470-1646471,1646476,1646559,1646717-1646723,1647
 
042,1648815,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653550,1653574,1653797,1653815-1653816,1653840,1654013,1654123,1654159,1654735,1654766,1654785,1656590,1662736,1662985,1663264,1663277,1663534,1663562,1663676,1663995,1664174,1664301,1664317,1664863-1664864,1664866,1665085,1665292,1665779,1666024,1666386-1666387,1666494,1666496,1666552,1666569,1666579,1666637,1666649,1666757,1666966,1666985,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668596,1668630,1669353,1669370,1669800,1669838,1669876,1669882,1670394,1670433,1670591,1670598-1670600,1670610,1670631-1670632,1670719,1670724,1670726,1670730,1670940,1672272,1672284,1673754,1674294,1675461,1675486,1675594,1675830,1676231,1676250-1676251,1676364,1676381,1676393,1676479,1676552,1676634,1678174,1678339,1678426-1678427,1678694,1679534,1679708,1679710,1679716,1680246,1681123,1681729,1681770,1681779,1681793,1681807,1681837-1681838,1681854,1681862,1681958,1682028,1
 
682033,1682311,1682324,1682330,1684172,1684366,1684383,1685739,1685744,1685772,1685826,1685891,1687242,1687261,1687268,1687340,1688563,1688901,1689346,1689357,1689656,1689825,1690011,1690021,1690054,1690080,1690209,1691134,1691487,1692849,1693088,1693105,1694058,1694111,1694290,1694501,1694548,1694788,1694872,1694878,1695354,1695371,1695706,1695778,1696199,1696280,1696378,1696467,1698212,1698220,1700607,1700870,1700896,1700977,1701093,1701123,1701607,1701666,1701673,1701760-1701761,1701765,1701940,1702246,1702250,1702313,1702630-1702631,1702633-1702634,1702637-1702638,1702640,1702647,1702662,1702665,1702668,1702672,1702675-1702676,1702680,1702722,1703890,1703948,1704251,1704289,1704318
+/tomcat/tc8.0.x/trunk:1636525,1637336,1637685,1637709,1638726,1640089,1640276,1640349,1640363,1640366,1640642,1640672,1640674,1640689,1640884,1641001,1641065,1641067,1641375,1641638,1641723,1641726,1641729-1641730,1641736,1641988,1642669-1642670,1642698,1642701,1643205,1643215,1643217,1643230,1643232,1643273,1643285,1643329-1643330,1643511,1643513,1643521,1643539,1643571,1643581-1643582,1643635,1643655,1643738,1643964,1644018,1644333,1644954,1644992,1645014,1645360,1645456,1645627,1645642,1645686,1645903-1645904,1645908-1645909,1645913,1645920,1646458,1646460-1646462,1646735,1646738-1646741,1646744,1646746,1646748-1646755,1646757,1646759-1646760,1647043,1648816,1651420-1651422,1651844,1652926,1652939-1652940,1652973,1653798,1653817,1653841,1654042,1654161,1654736,1654767,1654787,1656592,1659907,1662986,1663265,1663278,1663325,1663535,1663567,1663679,1663997,1664175,1664321,1664872,1665061,1665086,1666027,1666395,1666503,1666506,1666560,1666570,1666581,1666759,1666967,1666988,1667553
 
-1667555,1667558,1667617,1667633,1667637,1667747,1667767,1667873,1668028,1668137,1668634,1669432,1669801,1669840,1669895-1669896,1670398,1670435,1670592,1670605-1670607,1670609,1670632,1670720,1670725,1670727,1670731,1671114,1672273,1672285,1673759,1674220,1674295,1675469,1675488,1675595,1675831,1676232,1676367-1676369,1676382,1676394,1676483,1676556,1676635,1678178,1679536,1679988,1680256,1681124,1681182,1681730,1681840,1681864,1681869,1682010,1682034,1682047,1682052-1682053,1682062,1682064,1682070,1682312,1682325,1682331,1682386,1684367,1684385,1685759,1685774,1685827,1685892,1687341,1688904,1689358,1689657,1692850,1693093,1693108,1693324,1694060,1694115,1694291,1694427,1694431,1694503,1694549,1694789,1694873,1694881,1695356,1695372,1695823-1695825,1696200,1696281,1696379,1696468,1700608,1700871,1700897,1700978,1701094,1701124,1701608,1701668,1701676,1701766,1701944,1702248,1702252,1702314,1702390,1702723,1702725,1702728,1702730,1702733,1702735,1702737,1702739,1702742,1702744,1702
 
748,1702751,1702754,1702758,1702760,1702763,1702766,1703949,1704253,1704291,1704321-1704322,1704325,1704486
+/tomcat/trunk:1156115-1157160,1157162-1157859,1157862-1157942,1157945-1160347,1160349-1163716,1163718-1166689,1166691-1174340,1174342-1175596,1175598-1175611,1175613-1175932,1175934-1177783,1177785-1177980,1178006-1180720,1180722-1183094,1183096-1187753,1187755,1187775,1187801,1187806,1187809,1187826-1188312,1188314-1188401,1188646-1188840,1188842-1190176,1190178-1195223,1195225-1195953,1195955,1195957-1201238,1201240-1203345,1203347-1206623,1206625-1208046,1208073,1208096,1208114,1208145,1208772,1209194-1212125,1212127-1220291,1220293,1220295-1221321,1221323-1222329,1222332-1222401,1222405-1222795,1222850-1222950,1222969-1225326,1225328-1225463,1225465,1225627,1225629-1226534,1226536-1228908,1228911-1228923,1228927-1229532,1229534-1230766,1230768-1231625,1231627-1233414,1233419-1235207,1235209-1237425,1237427,1237429-1237977,1237981,1237985,1237995,1238070,1238073,1239024-1239048,1239050-1239062,1239135,1239256,1239258-1239485,1239785-1240046,1240101,1240106,1240109,1240112,1240114
 
,1240116,1240118,1240121,1240329,1240474-1240850,1240857,1241087,1241160,1241408-1241822,1241908-1241909,1241912-1242110,1242371-1292130,1292134-1292458,1292464-1292670,1292672-1292776,1292780-1293392,1293397-1297017,1297019-1297963,1297965-1299820,1300108,1300111-1300460,1300520-1300948,1300997,1301006,1301280,1302332,1302348,1302608-1302610,1302649,1302837,1303138,1303163,1303338,1303521,1303587,1303698,1303803,1303852,1304011,1304035,1304037,1304135,1304249,1304253,1304260,1304271,1304275,1304468,1304895,1304930-1304932,1305194,1305943,1305965,1306556,1306579-1306580,1307084,1307310,1307511-1307512,1307579,1307591,1307597,1310636,1310639-1310640,1310642,1310701,1311212,1311995,1327617,1327670,1331766,1333161,1333173,1333827,1334787,1335026,1335257,1335547,1335692,1335711,1335731,1336515,1336813,1336864,1336868,1336884,1337419,1337426,1337546,1337572,1337591-1337595,1337643,1337707,1337719,1337734,1337741,1337745,1338151-1338154,1338178,1342027,1342029,1342315,1342320,1342476,1342
 
498,1342503,1342717,1342795,1342805,1343044-1343046,1343335,1343394,1343400,1343629,1343708,1343718,1343895,1344063,1344068,1344250,1344266,1344515,1344528,1344612,1344629,1344725,1344868,1344890,1344893,1344896,1344901,1345020,1345029,1345039,1345287-1345290,1345294,1345309,1345325,1345357,1345367,1345579-1345580,1345582,1345688,1345699,1345704,1345731-1345732,1345737,1345744,1345752,1345754,1345779,1345781,1345846,1346107,1346365,1346376,1346404,1346510,1346514,1346519,1346581,1346635,1346644,1346683,1346794,1346885,1346932,1347034,1347047,1347087,1347108-1347109,1347583,1347737,1348105,1348357,1348398,1348425,1348461-1348495,1348498,1348752,1348762,1348772,1348776,1348859,1348968,1348973,1348989,1349007,1349237,1349298,1349317,1349410,1349473,1349539,1349879,1349887,1349893,1349922,1349984,1350124,1350241,1350243,1350294-1350295,1350299,1350864,1350900,1351010,1351054,1351056,1351068,1351134-1351135,1351148,1351259,1351604,1351636-1351640,1351991,1351993,1352011,1352056,1352059,1
 
352661,1352663,1352788,1352799,1353087,1353125,1353240,1353261,1353414,1353468,1353501,1353581,1353708,1354137,1354170,1354197,1354255,1354362,1354375,1354469,1354664,1354685,1354817,1354847,1354856,1355726,1355810,1356006-1356007,1356014,1356045,1356125,1356422,1356505,1356898,1357042,1357401,1357407,1358586,1358590,1358612-1358613,1359102,1359340,1359981,1360059,1360455,1360460,1360838,1360847,1360892,1360942,1361263,1361430,1361754-1361755,1361762,1361769,1361772,1361962,1361982,1361985,1361991,1364141,1364149,1364411-1364412,1364448,1366708,1366720,1366729,1366734,1366910,1366945,1366953,1366959,1367214,1370346,1370364,1370373,1370386,1370473,1370537,1370549,1370553,1370879,1370916,1370958,1370960,1370973,1371017,1371283,1371336,1371620,1371812,1371823,1371896,1371976,1371978,1371995,1371999,1372131,1372152,1372156,1372390,1373003,1373080,1373142,1373488,1373578,1373618,1373622,1373666,1373985,1373987,1373990,1373993,1374000,1374019,1374086,1374823,1376994,1377078,1377292,137731
 
1,1377342,1377433,1377444,1377516,1377518-1377519,1377532,1377535,1377544,1377689,1377785,1377794,1377811,1377824,1377827,1377831,1377852-1377853,1377887,1377900,1378322,1378361,1378394,1378699,1378715,1378818,1378868,1378918,1379047,1379090,1379178,1379206,1379213,1379418,1379580,1379590,1379639,1379647,1379649,1379665,1379733,1379735,1380066,1380073,1380075,1380376,1380635,1380637,1380838,1381411,1381623,1382314,1382343,1382366,1382515,1382832,1382842,1384051,1384055,1384063,1384068-1384069,1385336,1387937,1388709,1388890,1390882,1392098,1392619,1393071,1393115,1396615,1396723,1397086,1397464,1397466,1397472,1397482,1397484,1397839,1397868,1397944,1397950,1397953,1397957,1397960,1397962,1397964,1397969,1397971-1397974,1397976-1397980,1397985,1397988-1397989,1398089,1398107,1398109-1398110,1398112,1399022,1401472,1401792,1401808,1401814,1402113,1402122,1402345,1402348,1402350,1402428,1402573,1402576,1402600-1402601,1402622,1402643,1402683,1402705,1402837,1402855,1403099,1403468,140
 
4374,1404658,1404704,1404773,1404917-1404918,1405133,1405168,1405321,1405353,1405357,1405364,1405397,1405399-1405400,1405415,1405435,1405676,1405681,1406456,1406481,1406526,1407595,1407619,1408043,1408148,1408154,1408156,1408159,1408163-1408165,1408248,1408438,1408504,1408513-1408517,1408562-1408565,1408714,1408721,1408739,1408750,1408774,1408792,1408872-1408876,1408906,1408934,1409007,1409030,1410466,1410545,1410609,1410611,1410632,1410714,1410742,1410763-1410764,1410766,1411585,1411993,1412575,1413552,1413556,1413562,1414053,1414113,1414215,1414889,1415177-1415179,1415186,1416458,1416481,1416501,1416529,1416534-1416535,1416658,1417201,1417224,1417282,1417347-1417348,1417353,1417363,1417365,1417370-1417372,1417463,1417465,1417467,1417469,1417476,1424894,1425502,1425564,1425628,1426662,1427013,1427757,1427784,1427804,1427846,1428010,1428079,1428283,1428355,1428403,1428643,1428869,1428959,1428993,1429123,1429153,1429167,1429173,1429179-1429180,1429182,1429356,1429687,1429745,1429784,
 
1429836,1429863,1429946,1429969,1430079,1430147,1430165,1430445,1430448,1430481,1430487,1430508,1430550,1430567,1430771,1430773,1430775,1430791,1430799,1430806,1430809,1430921,1431164,1431171,1431206,1431221,1431293,1431298,1431302,1431308,1431310,1431320,1431661,1431920,1431990,1432517,1432867,1433976,1434403,1434428,1434438,1434447,1434456,1434463,1434500,1434598,1434660,1434685,1434725,1434757,1434882,1435126,1435505,1435509,1435600,1435606,1435636,1435642,1435759-1435760,1435765,1435767,1437317,1437337,1437505,1437637,1437649,1437743,1437891,1437897,1437903,1438411,1438463,1439054,1439334,1439434,1439442,1439445,1439667,1440095,1440622,1440911,1441342,1441348,1441403,1441416,1441428,1441807,1441895,1441916,1441920,1443350,1443405,1443427,1445111,1445125,1445190,1445208,1445212,1445328,1445337,1445520,1446108,1446137,1446357,1446612,1446640,1446650,1447012,1447178,1447791,1447817-1447818,1448117,1448121,1448125,1448679,1448826,1449225,1449406,1450990,1451053,1451061,1451105,14514
 
08,1451434,1451769,1451938-1451939,1451947,1451955-1451956,1452295,1452501,1452707,1452719,1452721,1452752,1453105,1453112,1453435,1453439,1453490,1453544,1453549,1453621,1454828,1454832,1454953,1455344,1455854,1455973,1456083,1456440,1456453,1456491,1456494,1456657,1456666,1456678,1456706,1456713,1456716,1456721,1456740,1456762,1456766,1456822,1456844,1456863,1456872,1456882,1456885,1456895,1456899,1456904,1456916,1456920,1456926,1456932,1456959,1456963,1456970,1457299,1457301,1457362,1457382,1457402,1457452,1457748,1457968,1458187,1458192,1458200,1458221,1458562,1458564-1458565,1458694,1458726,1458738-1458739,1459010,1459028,1459031,1459061,1459074-1459075,1459085,1459218,1459223,1459289,1459389,1459523-1459524,1459673,1459681,1459761,1459769,1459933,1460107,1460115,1460234,1460313,1460330,1460342,1460533,1460633,1460679,1460873,1461026,1461110,1461341,1461349,1461849,1464781,1465795,1465807,1466051,1466072,1466106,1467091,1468415,1470400,1470435,1470765,1471371,1471632,1475750,14
 
75791,1475900,1475930,1475968,1476761,1476805,1476815,1476972,1477051,1478857,1479175,1479179,1479248,1479482,1479951,1481164,1481835,1482115,1482288,1482309,1482311,1482313,1482321,1482591,1482720,1482723,1482799,1482835,1482854,1483104,1483229,1483288,1483360-1483361,1483390,1483552,1483554,1483679,1483743-1483744,1483786-1483787,1483816-1483817,1483949,1484253,1484592,1484780,1484786,1484861-1484862,1484959,1485114,1485489,1485495,1485611,1485847,1485862,1486062,1486134,1486217,1486294,1486443,1486834,1486861,1486875,1486890,1486939,1487862,1487882,1488151,1488793,1489170,1489195-1489196,1489201,1489385,1489390,1489405,1489437,1489536,1489546,1489610,1489633,1489648,1489738,1489812,1489886,1491485,1491596,1491709,1491841,1491890,1491940,1491942,1492307,1492336,1492343,1492358,1492555,1492570,1493011,1493013-1493014,1493071,1493113,1493740,1493801,1493910,1494044,1494048,1494051,1494056,1494143,1495015,1495043,1495154,1495197,1495880,1495886,1496061,1496732,1496734,1497474,1497538
 
,1497754,1498340,1498363,1498368,1498409,1498475,1498482,1498498,1498669,1498698,1498808,1499371,1499388,1499513,1499953,1500003,1500062,1500371,1500380,1500577,1500590,1500663,1501176,1501266,1501304,1501719,1501738,1501823,1501910,1501927,1501929,1502254,1502349,1503851,1505843,1505929,1506053,1507013,1507052,1507096,1507870,1507872,1508196,1508259,1508346,1509128,1509151,1509156,1509161,1509806,1510246,1510271,1510488,1511212,1511217,1511434,1512034,1513025,1513148-1513149,1513665,1514281,1514291,1514305,1514368,1514470,1514485-1514486,1515841,1515926,1516113,1516295,1516419,1516710,1516953,1517536,1517898,1517941,1517970,1517980,1518189,1518210,1518328,1518381,1518536,1518540,1518578,1518581,1518589,1519611,1519623,1519627,1520273,1520349,1520632,1520655,1521023,1521025,1521027,1521030,1521032,1521034,1521040,1521043,1521049-1521050,1521059-1521061,1521073,1521075,1521271,1521276,1521444,1521687,1521829,1521831,1521834-1521835,1521837,1521839-1521840,1522016,1523555,1523646-1523
 
647,1523674,1523781,1523788,1523830,1523955,1523958,1523964,1523982,1524078,1524558,1524652,1524657,1524668,1524683,1524687,1524707,1524719,1524727,1524761,1524978,1524984,1525593,1525696,1526043,1526052,1526730,1527480,1527493,1527727-1527728,1527730-1527733,1528060,1528166,1528169,1528171-1528172,1528248,1528369,1528383,1528407,1528424,1528855,1529149,1529181,1529317,1529546,1529549,1529787,1530057,1530081,1530103,1530213,1530296,1530298,1530325,1530342,1530348,1530353,1530397,1530418,1530421,1530423,1530426,1530445,1530574,1530599,1530632,1530791,1530822,1530866,1530875,1530909,1530989,1531087,1531099,1531130,1531138,1531156,1531161,1531271,1531312,1531600,1532036,1532269,1532286,1532373,1532437,1532445,1532498-1532501,1532506,1532544,1532622,1532627,1532718-1532722,1532765-1532766,1533048-1533049,1533117,1533312,1533347,1533962,1533980,1534165,1534418,1534540,1534543-1534544,1534612,1534616,1534619,1534727,1534744,1534846,1536298,1536337,1536520,1536624,1536632,1536735,1536834,1
 
536848,1536850,1536852,1537041,1537057,1537073,1537404,1537835,1538533,1538781,1538798,1538833,1538921,1538923-1538924,1539133,1539157,1539173,1539180,1539445,1539452,1539702,1539716,1539887,1539953,1540374,1540383-1540386,1540396-1540398,1540400-1540413,1540539,1540641,1540647,1540670,1540687,1540765,1540807,1542267,1542339,1542769,1542841,1542845,1542856,1543383,1543753,1543772,1543815-1543817,1543897,1543943,1543948,1544072,1544075,1544082,1544165,1544208,1544210,1544453,1544455,1544460,1544472,1544589,1544593,1544606,1544679,1545075,1545078,1545082,1545213,1545215,1545261,1545284,1545288,1545377,1545416,1545471,1545480,1545558,1545619,1545665,1545750,1545799,1545814,1545832,1545847,1545863,1546172,1546372,1546382,1546631,1546656,1547032,1547760,1548169,1548182-1548183,1548185,1548498,1548695,1548961,1548966,1549522,1549525,1549528,1549909,1550387,1550541,1550743,1550920,1551298,1551300,1551323,1551481-1551482,1551953,1552042,1552071,1552080,1552287,1552804,1553126,1553608,155365
 
0,1555163,1556725,1556783,1556788,1556807,1556823,1556836,1556957,1557082,1557747,1557752,1558129,1558355,1558811,1559081,1559113,1559134,1559397,1559419,1559549-1559550,1559561-1559562,1559573,1559662,1559697,1559707,1559798,1560017,1560158,1560177,1560212-1560213,1560784,1560810,1560817,1560838,1560850,1560856,1560922,1560948,1561025,1561054-1561065,1561067-1561070,1561072-1561075,1561083,1561085,1561093-1561094,1561098,1561101,1561104,1561106,1561114-1561116,1561121-1561123,1561126-1561128,1561131-1561133,1561135-1561136,1561138,1561140,1561143-1561146,1561148-1561157,1561160-1561162,1561164-1561176,1561178-1561182,1561185-1561188,1561190-1561192,1561195,1561623,1561635,1561640,1561732,1562411,1562458,1562581,1562597,1562742,1562746,1563206,1563989,1564299,1564309,1564312,1564398,1564414,1564461,1564742-1564746,1565300-1565416,1565451,1565788,1566693,1566699,1567144,1567382,1567404,1567429,1567580,1567634,1567993,1568768,1568779-1568780,1568803,1568828,1568921,1568926,1568936,156
 
9398,1569459,1569735,1569755,1570114,1570120,1570176,1570547,1570601,1570629,1570713,1571196,1571725,1572574,1574004,1574479,1574923,1574936,1574943,1575012,1575262,1575545,1575885,1575910,1576104,1576271,1576288,1576628,1576722,1576768,1576810,1576908,1576923,1577182,1577195,1577315,1577324,1577463,1577544,1577557,1577565,1577581,1577714,1577873,1577944,1578309,1578329,1578337,1578610-1578611,1578636,1578810,1578812-1578813,1578817,1579174,1579214-1579215,1579626,1580030,1580080,1580194,1580514,1580598,1580658,1580821,1580849,1580869,1581061,1581529,1582009,1582064,1582453,1584915,1584922,1586644,1586658,1586890,1586894,1586951,1586959,1586961,1587272,1587378-1587379,1587723,1587859,1587865,1587870,1587886,1588102,1588193,1588197,1588269,1588462,1589035,1589039,1589043,1589100,1589102,1589165-1589166,1589170,1589523,1589630,1589633,1589668,1589698,1589726,1589737-1589738,1589763,1589837,1589842,1589967,1589980,1590018,1590060,1590076,1590120,1590128,1590283,1590300,1590302,1590322,
 
1590329,1590339,1590345,1590377,1590402,1590422,1590438,1590451,1590461,1590471,1590474,1590479,1590604,1590635,1590638,1590646,1590648,1590801,1590835,1590842,1590911,1593132,1593189,1593200,1593259,1593261,1593284,1593335,1593356,1593387,1593421,1593506,1593621,1593697,1593773,1593800,1593834,1593877,1593940,1593994,1594229,1594393,1594436,1594730,1594924,1595171,1595230,1595285,1595289,1595331,1595365,1595690,1595887,1595898,1596081,1596141,1596189,1596275,1596390,1596971,1597532,1597541,1597572-1597573,1597652,1597753-1597755,1597759,1597855,1598153,1598242,1598248,1598266-1598267,1598304,1598307,1598310-1598311,1598313,1599393,1599395,1599460,1599479,1599500,1599558,1599738-1599739,1600109,1600162,1600408,1600449,1600495,1600501,1600579-1600580,1600743,1600833,1600839,1600862,1600899,1600955,1600963,1600965,1600978,1600984,1601329-1601330,1601332,1601785,1601796,1601850,1601855,1601886,1601977,1602046,1602189,1602198,1602452,1602521,1602583,1602694,1602831,1602842,1602844,16028
 
51,1602858,1602865,1602956,1603591,1603621,1603770,1603775,1603779,1603783,1603947,1604024,1604165,1604484-1604496,1604605,1604661,1604768,1604776,1604781,1604788,1604810,1604818,1604822,1605054,1605061,1605066,1605402,1605417,1605454,1605528,1605821,1605823,1605890-1605891,1606072,1606103,1606114,1606653,1607592,1607675,1607740,1607930-1607931,1607934,1608301,1608428,1608443,1608481,1608645,1608963,1609061,1609175,1609334,1609593,1609920,1611506,1614163,1614169,1614179,1614197,1615710,1615724,1615876,1615911,1615947,1616441,1616452,1616458,1617362,1617365,1617383,1617445,1617456,1617461,1617469-1617470,1618112,1618169,1618565,1618688,1618704,1618830,1618832-1618835,1619056,1619106,1619114,1619361-1619362,1619583,1619585,1619738,1619742,1620743,1620915,1620917,1621698,1621725-1621727,1621729,1621731,1621929,1621975,1622163,1622187,1622228,1622233,1622251,1622259,1622263,1622297,1622312,1622342,1622470,1622713,1623236,1623384,1623392,1623685,1623693,1623695,1623779,1624110,1624112,16
 
24115-1624116,1624119,1624122,1624124,1624126,1624129-1624130,1624132-1624133,1624135,1624139,1624142-1624143,1624147,1624150,1624152,1624155-1624157,1624162-1624165,1624220,1624233,1624235,1624246-1624247,1624252,1624254,1624396,1624408,1624422,1624476,1624486-1624487,1624497-1624498,1624542,1624563-1624565,1624568-1624569,1624571,1624573,1624580,1624583,1624586,1624588,1624592,1624598,1624605,1624614,1624636,1624642,1624645,1624647-1624648,1624655,1624657,1624679,1624959,1624984,1625501,1625504,1625563,1625599,1625842,1625854,1626579,1626741,1626747-1626748,1626764-1626765,1626779,1626893,1626905,1626991,1627033,1627296,1627323,1627370,1627525,1627531,1627569,1627629,1628517,1628524,1628541,1628984,1629293,1629906,1630065,1630088,1630092,1630094,1630110,1630194,1630199,1630203,1630208-1630210,1630216,1630375,1630407,1631347,1631381,1631568,1631628,1631717,1631730,1631817-1631818,1631839,1631852,1631987,1631992-1631993,1632251,1632290,1632307,1632411,1632423-1632425,1632512,1632523
 
,1632584,1632600-1632601,1632604,1632965,1632975,1632988,1633128,1633342,1633346,1633369,1633447-1633448,1633500,1633688,1633785,1633824-1633825,1633936,1633974,1634229,1634250,1634257-1634258,1634260,1634312,1634326-1634327,1634329,1634690,1635215,1635301,1635308,1635310,1636524,1637331,1637684,1637695,1638720-1638725,1639653,1640083,1640088,1640275,1640322,1640347,1640361,1640365,1640652,1640655-1640658,1640688,1640700-1640883,1641000,1641058,1641064,1641374,1641634,1641656-1641692,1641707-1641718,1641721-1641722,1641735,1641981,1642327,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643121,1643206,1643209-1643210,1643216,1643270,1643283,1643309-1643310,1643536,1643570,1643634,1643654,1643675,1643733,1643761,1643963,1644017,1644321,1644529,1644535,1644989,1645011,1645357-1645358,1645455,1645486,1645488,1645626,1645641,1645685,1645743,1645763,1646098-1646106,1646178,1646304,1646470-1646471,1646476,1646559,1646717-1646723,1647
 
042,1648815,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653550,1653574,1653797,1653815-1653816,1653840,1654013,1654123,1654159,1654735,1654766,1654785,1656590,1662736,1662985,1663264,1663277,1663534,1663562,1663676,1663995,1664174,1664301,1664317,1664863-1664864,1664866,1665085,1665292,1665779,1666024,1666386-1666387,1666494,1666496,1666552,1666569,1666579,1666637,1666649,1666757,1666966,1666985,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668596,1668630,1669353,1669370,1669800,1669838,1669876,1669882,1670394,1670433,1670591,1670598-1670600,1670610,1670631-1670632,1670719,1670724,1670726,1670730,1670940,1672272,1672284,1673754,1674294,1675461,1675486,1675594,1675830,1676231,1676250-1676251,1676364,1676381,1676393,1676479,1676552,1676634,1678174,1678339,1678426-1678427,1678694,1679534,1679708,1679710,1679716,1680246,1681123,1681729,1681770,1681779,1681793,1681807,1681837-1681838,1681854,1681862,1681958,1682028,1
 
682033,1682311,1682324,1682330,1684172,1684366,1684383,1685739,1685744,1685772,1685826,1685891,1687242,1687261,1687268,1687340,1688563,1688901,1689346,1689357,1689656,1689825,1690011,1690021,1690054,1690080,1690209,1691134,1691487,1692849,1693088,1693105,1694058,1694111,1694290,1694501,1694548,1694788,1694872,1694878,1695354,1695371,1695706,1695778,1696199,1696280,1696378,1696467,1698212,1698220,1700607,1700870,1700896,1700977,1701093,1701123,1701607,1701666,1701673,1701760-1701761,1701765,1701940,1702244,1702246,1702250,1702313,1702630-1702631,1702633-1702634,1702637-1702638,1702640,1702647,1702662,1702665,1702668,1702672,1702675-1702676,1702680,1702722,1703890,1703948,1704251,1704289,1704318

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/AttributeParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/AttributeParser.java?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/AttributeParser.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/AttributeParser.java 
Tue Sep 22 10:51:14 2015
@@ -202,11 +202,11 @@ public class AttributeParser {
     }
 
     /*
-     * For EL need to unquote everything but no need to convert anything. The
-     * EL is terminated by '}'. The only other valid location for '}' is inside
-     * a StringLiteral. The literals are delimited by '\'' or '\"'. The only
-     * other valid location for '\'' or '\"' is also inside a StringLiteral. A
-     * quote character inside a StringLiteral must be escaped if the same quote
+     * Once inside EL, no need to unquote or convert anything. The EL is
+     * terminated by '}'. The only other valid location for '}' is inside a
+     * StringLiteral. The literals are delimited by '\'' or '\"'. The only 
other
+     * valid location for '\'' or '\"' is also inside a StringLiteral. A quote
+     * character inside a StringLiteral must be escaped if the same quote
      * character is used to delimit the StringLiteral.
      */
     private void parseEL() {
@@ -214,7 +214,7 @@ public class AttributeParser {
         boolean insideLiteral = false;
         char literalQuote = 0;
         while (i < size && !endEL) {
-            char ch = nextChar();
+            char ch = input.charAt(i++);
             if (ch == '\'' || ch == '\"') {
                 if (insideLiteral) {
                     if (literalQuote == ch) {
@@ -228,7 +228,7 @@ public class AttributeParser {
             } else if (ch == '\\') {
                 result.append(ch);
                 if (insideLiteral && size < i) {
-                    ch = nextChar();
+                    ch = input.charAt(i++);
                     result.append(ch);
                 }
             } else if (ch == '}') {

Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ELParser.java Tue Sep 
22 10:51:14 2015
@@ -205,11 +205,9 @@ public class ELParser {
         while (hasNextChar()) {
             char ch = nextChar();
             if (ch == '\\') {
-                // Is this the start of a "\${" or "\#{" escape sequence?
+                // Is this the start of a "\$" or "\#" escape sequence?
                 char p0 = peek(0);
-                char p1 = peek(1);
-                if ((p0 == '$' || (p0 == '#' && 
!isDeferredSyntaxAllowedAsLiteral)) && p1 == '{') {
-                    buf.append(nextChar());
+                if (p0 == '$' || (p0 == '#' && 
!isDeferredSyntaxAllowedAsLiteral)) {
                     buf.append(nextChar());
                 } else {
                     buf.append(ch);
@@ -229,7 +227,8 @@ public class ELParser {
 
     /**
      * Escape '$' and '#', inverting the unescaping performed in
-     * {@link #skipUntilEL()}.
+     * {@link #skipUntilEL()} but only for ${ and #{ sequences since escaping
+     * for $ and # is optional.
      *
      * @param input Non-EL input to be escaped
      * @param isDeferredSyntaxAllowedAsLiteral

Modified: 
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java 
Tue Sep 22 10:51:14 2015
@@ -616,11 +616,7 @@ class JspDocumentParser
                         lastCh = ch;
                     }
                 } else if (lastCh == '\\' && (ch == '$' || ch == '#')) {
-                    if (i + 1 < charBuffer.length() && charBuffer.charAt(i + 
1) == '{') {
-                        if (pageInfo.isELIgnored()) {
-                            ttext.write('\\');
-                        }
-                    } else {
+                    if (pageInfo.isELIgnored()) {
                         ttext.write('\\');
                     }
                     ttext.write(ch);

Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspReader.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspReader.java?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspReader.java 
(original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspReader.java Tue Sep 
22 10:51:14 2015
@@ -272,10 +272,30 @@ class JspReader {
         return caw.toString();
     }
 
-    int peekChar() throws JasperException {
-        if (!hasMoreInput())
-            return -1;
-        return current.stream[current.cursor];
+    /**
+     * Read ahead one character without moving the cursor.
+     *
+     * @return The next character or -1 if no further input is available
+     */
+    int peekChar() {
+        return peekChar(0);
+    }
+
+    /**
+     * Read ahead the given number of characters without moving the cursor.
+     *
+     * @param readAhead The number of characters to read ahead. NOTE: This is
+     *                  zero based.
+     *
+     * @return The requested character or -1 if the end of the input is reached
+     *         first
+     */
+    int peekChar(int readAhead) {
+        int target = current.cursor + readAhead;
+        if (target < current.stream.length) {
+            return current.stream[target];
+        }
+        return -1;
     }
 
     Mark mark() {
@@ -444,15 +464,17 @@ class JspReader {
 
     /**
      * Skip until the given string is matched in the stream, but ignoring
-     * chars initially escaped by a '\'.
+     * chars initially escaped by a '\' and any EL expressions.
      * When returned, the context is positioned past the end of the match.
      *
      * @param s The String to match.
+     * @param ignoreEL <code>true</code> if something that looks like EL should
+     *                 not be treated as EL.
      * @return A non-null <code>Mark</code> instance (positioned immediately
      *         before the search string) if found, <strong>null</strong>
      *         otherwise.
      */
-    Mark skipUntilIgnoreEsc(String limit) throws JasperException {
+    Mark skipUntilIgnoreEsc(String limit, boolean ignoreEL) throws 
JasperException {
         Mark ret = mark();
         int limlen = limit.length();
         int ch;
@@ -462,6 +484,12 @@ class JspReader {
         for (ch = nextChar(ret) ; ch != -1 ; prev = ch, ch = nextChar(ret)) {
             if (ch == '\\' && prev == '\\') {
                 ch = 0;                // Double \ is not an escape char 
anymore
+            } else if (prev == '\\') {
+                continue;
+            } else if (!ignoreEL && (ch == '$' || ch == '#') && peekChar() == 
'{' ) {
+                // Move beyond the '{'
+                nextChar();
+                skipELExpression();
             } else if (ch == firstChar && prev != '\\') {
                 for (int i = 1 ; i < limlen ; i++) {
                     if (peekChar() == limit.charAt(i))

Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Parser.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Parser.java?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Parser.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/Parser.java Tue Sep 22 
10:51:14 2015
@@ -198,6 +198,8 @@ class Parser implements TagConstants {
         if (qName == null)
             return false;
 
+        boolean ignoreEL = pageInfo.isELIgnored();
+
         // Determine prefix and local name components
         String localName = qName;
         String uri = "";
@@ -222,11 +224,14 @@ class Parser implements TagConstants {
             err.jspError(reader.mark(), "jsp.error.attribute.noquote");
 
         String watchString = "";
-        if (reader.matches("<%="))
+        if (reader.matches("<%=")) {
             watchString = "%>";
+            // Can't embed EL in a script expression
+            ignoreEL = true;
+        }
         watchString = watchString + quote;
 
-        String attrValue = parseAttributeValue(watchString);
+        String attrValue = parseAttributeValue(watchString, ignoreEL);
         attrs.addAttribute(uri, localName, qName, "CDATA", attrValue);
         return true;
     }
@@ -257,9 +262,9 @@ class Parser implements TagConstants {
      * RTAttributeValueDouble ::= ((QuotedChar - '"')* - 
((QuotedChar-'"')'%>"')
      * ('%>"' | TRANSLATION_ERROR)
      */
-    private String parseAttributeValue(String watch) throws JasperException {
+    private String parseAttributeValue(String watch, boolean ignoreEL) throws 
JasperException {
         Mark start = reader.mark();
-        Mark stop = reader.skipUntilIgnoreEsc(watch);
+        Mark stop = reader.skipUntilIgnoreEsc(watch, ignoreEL);
         if (stop == null) {
             err.jspError(start, "jsp.error.attribute.unterminated", watch);
         }
@@ -1262,7 +1267,11 @@ class Parser implements TagConstants {
 
     /*
      * Parse for a template text string until '<' or "${" or "#{" is 
encountered,
-     * recognizing escape sequences "<\%", "\${", and "\#{".
+     * recognizing escape sequences "<\%", "\$", and "\#".
+     *
+     * Note: JSP uses '\$' as an escape for '$' and '\#' for '#' whereas EL 
uses
+     *       '\${' for '${' and '\#{' for '#{'. We are processing JSP template
+     *       test here so the JSP escapes apply.
      */
     private void parseTemplateText(Node parent) throws JasperException {
 
@@ -1271,64 +1280,46 @@ class Parser implements TagConstants {
 
         CharArrayWriter ttext = new CharArrayWriter();
 
-        while (reader.hasMoreInput()) {
-            int ch = reader.nextChar();
+        int ch = reader.nextChar();
+        while (ch != -1) {
             if (ch == '<') {
                 // Check for "<\%"
-                if (reader.nextChar() == '\\') {
-                    if (reader.nextChar() == '%') {
-                        ttext.append('<');
-                        ttext.append('%');
-                    } else {
-                        reader.pushChar();
-                        reader.pushChar();
-                        if (ttext.size() == 0) {
-                            ttext.append('<');
-                        } else {
-                            reader.pushChar();
-                            break;
-                        }
-                    }
+                if (reader.peekChar(0) == '\\' && reader.peekChar(1) == '%') {
+                    ttext.write(ch);
+                    // Swallow the \
+                    reader.nextChar();
+                    ttext.write(reader.nextChar());
                 } else {
-                    reader.pushChar();
                     if (ttext.size() == 0) {
-                        ttext.append('<');
+                        ttext.write(ch);
                     } else {
                         reader.pushChar();
                         break;
                     }
                 }
             } else if (ch == '\\' && !pageInfo.isELIgnored()) {
-                int next = reader.nextChar();
+                int next = reader.peekChar(0);
                 if (next == '$' || next == '#') {
-                    if (reader.nextChar() == '{') {
-                        ttext.write(next);
-                        ttext.append('{');
-                    } else {
-                        ttext.append('\\');
-                        ttext.write(next);
-                        reader.pushChar();
-                    }
+                    ttext.write(reader.nextChar());
                 } else {
-                    ttext.append('\\');
-                    reader.pushChar();
+                    ttext.write(ch);
                 }
             } else if ((ch == '$' || ch == '#' && 
!pageInfo.isDeferredSyntaxAllowedAsLiteral()) &&
                     !pageInfo.isELIgnored()) {
-                if (reader.nextChar() == '{') {
-                    reader.pushChar();
+                if (reader.peekChar(0) == '{') {
                     reader.pushChar();
                     break;
                 } else {
-                    reader.pushChar();
                     ttext.write(ch);
                 }
             } else {
                 ttext.write(ch);
             }
+            ch = reader.nextChar();
         }
 
-        new Node.TemplateText(ttext.toString(), start, parent);
+        @SuppressWarnings("unused")
+        Node unused = new Node.TemplateText(ttext.toString(), start, parent);
     }
 
     /*
@@ -1344,8 +1335,8 @@ class Parser implements TagConstants {
                         "&lt;jsp:text&gt;");
             }
             CharArrayWriter ttext = new CharArrayWriter();
-            while (reader.hasMoreInput()) {
-                int ch = reader.nextChar();
+            int ch = reader.nextChar();
+            while (ch != -1) {
                 if (ch == '<') {
                     // Check for <![CDATA[
                     if (!reader.matches("![CDATA[")) {
@@ -1359,39 +1350,39 @@ class Parser implements TagConstants {
                     String text = reader.getText(start, stop);
                     ttext.write(text, 0, text.length());
                 } else if (ch == '\\') {
-                    if (!reader.hasMoreInput()) {
-                        ttext.write('\\');
-                        break;
-                    }
-                    ch = reader.nextChar();
-                    if (ch != '$' && ch != '#') {
+                    int next = reader.peekChar();
+                    if (next == '$' || next =='#') {
+                        ttext.write(reader.nextChar());
+                    } else {
                         ttext.write('\\');
                     }
-                    ttext.write(ch);
                 } else if (ch == '$' || ch == '#') {
-                    if (!reader.hasMoreInput()) {
-                        ttext.write(ch);
-                        break;
-                    }
-                    if (reader.nextChar() != '{') {
+                    if (reader.peekChar() == '{') {
+                        // Swallow the '{'
+                        reader.nextChar();
+                        
+                        // Create a template text node
+                        @SuppressWarnings("unused")
+                        Node unused = new Node.TemplateText(
+                                ttext.toString(), start, parent);
+    
+                        // Mark and parse the EL expression and create its 
node:
+                        parseELExpression(parent, (char) ch);
+    
+                        start = reader.mark();
+                        ttext.reset();
+                    } else {
                         ttext.write(ch);
-                        reader.pushChar();
-                        continue;
                     }
-                    // Create a template text node
-                    new Node.TemplateText(ttext.toString(), start, parent);
-
-                    // Mark and parse the EL expression and create its node:
-                    parseELExpression(parent, (char) ch);
-
-                    start = reader.mark();
-                    ttext = new CharArrayWriter();
                 } else {
                     ttext.write(ch);
                 }
+                ch = reader.nextChar();
             }
 
-            new Node.TemplateText(ttext.toString(), start, parent);
+            @SuppressWarnings("unused")
+            Node unused =
+                    new Node.TemplateText(ttext.toString(), start, parent);
 
             if (!reader.hasMoreInput()) {
                 err.jspError(start, "jsp.error.unterminated",

Modified: tomcat/tc7.0.x/trunk/test/org/apache/el/TestELInJsp.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/el/TestELInJsp.java?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/org/apache/el/TestELInJsp.java (original)
+++ tomcat/tc7.0.x/trunk/test/org/apache/el/TestELInJsp.java Tue Sep 22 
10:51:14 2015
@@ -123,21 +123,19 @@ public class TestELInJsp extends TomcatB
         assertEcho(result, "00-hello world");
         assertEcho(result, "01-hello 'world");
         assertEcho(result, "02-hello \"world");
-        assertEcho(result, "03-hello world");
-        assertEcho(result, "04-hello 'world");
-        assertEcho(result, "05-hello \"world");
-        assertEcho(result, "06-hello world");
-        assertEcho(result, "07-hello 'world");
-        assertEcho(result, "08-hello \"world");
-        assertEcho(result, "09-hello world");
-        assertEcho(result, "10-hello 'world");
+        assertEcho(result, "03-hello \"world");
+        assertEcho(result, "04-hello world");
+        assertEcho(result, "05-hello 'world");
+        assertEcho(result, "06-hello 'world");
+        assertEcho(result, "07-hello \"world");
+        assertEcho(result, "08-hello world");
+        assertEcho(result, "09-hello 'world");
+        assertEcho(result, "10-hello \"world");
         assertEcho(result, "11-hello \"world");
         assertEcho(result, "12-hello world");
         assertEcho(result, "13-hello 'world");
-        assertEcho(result, "14-hello \"world");
-        assertEcho(result, "15-hello world");
-        assertEcho(result, "16-hello 'world");
-        assertEcho(result, "17-hello \"world");
+        assertEcho(result, "14-hello 'world");
+        assertEcho(result, "15-hello \"world");
     }
 
     @Test
@@ -158,8 +156,6 @@ public class TestELInJsp extends TomcatB
         // Warning: JSP attribute escaping != Java String escaping
         assertEcho(result, "00-\\'hello world\\'");
         assertEcho(result, "01-\\'hello world\\'");
-        assertEcho(result, "02-\\'hello world\\'");
-        assertEcho(result, "03-\\'hello world\\'");
 
         res = getUrl("http://localhost:"; + getPort() + 
"/test/bug45nnn/bug45451b.jsp");
         result = res.toString();
@@ -170,18 +166,25 @@ public class TestELInJsp extends TomcatB
         assertEcho(result, "01-${1+1}");
         assertEcho(result, "02-\\${1+1}");
         assertEcho(result, "03-\\\\${1+1}");
-        assertEcho(result, "04-\\$500");
+        assertEcho(result, "04-$500");
+        // Inside an EL literal '\' is only used to escape '\', ''' and '"'
+        assertEcho(result, "05-\\$");
+        assertEcho(result, "06-\\${");
         assertEcho(result, "10-2");
         assertEcho(result, "11-${1+1}");
         assertEcho(result, "12-\\2");
         assertEcho(result, "13-\\${1+1}");
         assertEcho(result, "14-\\\\2");
-        assertEcho(result, "15-\\$500");
+        assertEcho(result, "15-$500");
+        assertEcho(result, "16-\\$");
+        assertEcho(result, "17-\\${");
         assertEcho(result, "20-2");
         assertEcho(result, "21-#{1+1}");
         assertEcho(result, "22-\\2");
         assertEcho(result, "23-\\#{1+1}");
         assertEcho(result, "24-\\\\2");
+        assertEcho(result, "25-\\#");
+        assertEcho(result, "26-\\#{");
 
         res = getUrl("http://localhost:"; + getPort() + 
"/test/bug45nnn/bug45451c.jsp");
         result = res.toString();
@@ -213,13 +216,13 @@ public class TestELInJsp extends TomcatB
         assertEcho(result, "01-${1+1}");
         assertEcho(result, "02-\\${1+1}");
         assertEcho(result, "03-\\\\${1+1}");
-        assertEcho(result, "04-\\$500");
+        assertEcho(result, "04-$500");
         assertEcho(result, "10-2");
         assertEcho(result, "11-${1+1}");
         assertEcho(result, "12-\\${1+1}");
         assertEcho(result, "13-\\\\${1+1}");
         assertEcho(result, "14-\\\\\\${1+1}");
-        assertEcho(result, "15-\\$500");
+        assertEcho(result, "15-$500");
         assertEcho(result, "20-2");
         assertEcho(result, "21-#{1+1}");
         assertEcho(result, "22-\\#{1+1}");
@@ -235,13 +238,13 @@ public class TestELInJsp extends TomcatB
         assertEcho(result, "01-${1+1}");
         assertEcho(result, "02-\\${1+1}");
         assertEcho(result, "03-\\\\${1+1}");
-        assertEcho(result, "04-\\$500");
+        assertEcho(result, "04-$500");
         assertEcho(result, "10-2");
         assertEcho(result, "11-${1+1}");
         assertEcho(result, "12-\\2");
         assertEcho(result, "13-\\${1+1}");
         assertEcho(result, "14-\\\\2");
-        assertEcho(result, "15-\\$500");
+        assertEcho(result, "15-$500");
         assertEcho(result, "20-#{1+1}");
         assertEcho(result, "21-\\#{1+1}");
         assertEcho(result, "22-\\#{1+1}");
@@ -390,13 +393,13 @@ public class TestELInJsp extends TomcatB
         assertEcho(result, "08-a2z");
         assertEcho(result, "09-az2");
         assertEcho(result, "10-${'foo'}bar");
-        assertEcho(result, "11-\"}");
+        assertEcho(result, "11-\\\"}");
         assertEcho(result, "12-foo\\bar\\baz");
         assertEcho(result, "13-foo\\bar\\baz");
         assertEcho(result, "14-foo\\bar\\baz");
         assertEcho(result, "15-foo\\bar\\baz");
         assertEcho(result, "16-foo\\bar\\baz");
-        assertEcho(result, "17-foo\\bar\\baz");
+        assertEcho(result, "17-foo\\&apos;bar&apos;\\&quot;baz&quot;");
     }
 
     @Test

Modified: 
tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- 
tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java 
(original)
+++ 
tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestAttributeParser.java 
Tue Sep 22 10:51:14 2015
@@ -127,19 +127,15 @@ public class TestAttributeParser {
         // list and looking at the spec to find some edge cases
 
         // '\' is only an escape character inside a StringLiteral
-        assertEquals("\\", evalAttr("${'\\\\\\\\'}", '\"'));
-        assertEquals("\\", evalAttr("${\"\\\\\\\\\"}", '\"'));
+        // Attribute escaping does not apply inside EL expressions
+        assertEquals("\\", evalAttr("${'\\\\'}", '\"'));
 
         // Can use ''' inside '"' when quoting with '"' and vice versa without
         // escaping
-        assertEquals("\\\"", evalAttr("${'\\\\\\\\\\\"'}", '\"'));
-        assertEquals("\"\\", evalAttr("${'\\\"\\\\\\\\'}", '\"'));
-        assertEquals("\\'", evalAttr("${'\\\\\\\\\\\\''}", '\"'));
-        assertEquals("'\\", evalAttr("${'\\\\'\\\\\\\\'}", '\"'));
-        assertEquals("\\'", evalAttr("${\\\"\\\\\\\\'\\\"}", '\"'));
-        assertEquals("'\\", evalAttr("${\\\"'\\\\\\\\\\\"}", '\"'));
-        assertEquals("\\\"", evalAttr("${\\\"\\\\\\\\\\\\\\\"\\\"}", '\"'));
-        assertEquals("\"\\", evalAttr("${\\\"\\\\\\\"\\\\\\\\\\\"}", '\"'));
+        assertEquals("\\\"", evalAttr("${'\\\\\"'}", '\"'));
+        assertEquals("\"\\", evalAttr("${'\\\"\\\\'}", '\"'));
+        assertEquals("\\'", evalAttr("${'\\\\\\''}", '\"'));
+        assertEquals("'\\", evalAttr("${'\\'\\\\'}", '\"'));
 
         // Quoting <% and %>
         assertEquals("hello <% world", evalAttr("hello <\\% world", '\"'));
@@ -156,9 +152,8 @@ public class TestAttributeParser {
         // expression that follows from being evaluated.
         //
         assertEquals("foo\\bar\\baz", 
evalAttr("${\'foo\'}\\\\${\'bar\'}\\\\${\'baz\'}", '\"'));
-        assertEquals("foo\\bar\\baz", 
evalAttr("${\'foo\'}\\\\${\\\"bar\\\"}\\\\${\'baz\'}", '\"'));
-        assertEquals("foo\\bar\\baz", 
evalAttr("${\\\"foo\\\"}\\\\${\'bar\'}\\\\${\\\"baz\\\"}", '\"'));
-        assertEquals("foo\\bar\\baz", 
evalAttr("${\"foo\"}\\\\${\\\'bar\\\'}\\\\${\"baz\"}", '\''));
+        assertEquals("foo\\bar\\baz", 
evalAttr("${\'foo\'}\\\\${\"bar\"}\\\\${\'baz\'}", '\"'));
+        assertEquals("foo\\bar\\baz", 
evalAttr("${\"foo\"}\\\\${\'bar\'}\\\\${\"baz\"}", '\"'));
     }
 
     @Test

Modified: tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java 
(original)
+++ tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestELParser.java Tue 
Sep 22 10:51:14 2015
@@ -238,13 +238,15 @@ public class TestELParser {
 
     @Test
     public void testEscape04() throws JasperException {
-        doTestParser("\\$", "\\$");
+        // When parsed as EL in JSP the escaping of $ as \$ is optional
+        doTestParser("\\$", "\\$", "$");
     }
 
 
     @Test
     public void testEscape05() throws JasperException {
-        doTestParser("\\#", "\\#");
+        // When parsed as EL in JSP the escaping of # as \# is optional
+        doTestParser("\\#", "\\#", "#");
     }
 
 
@@ -280,17 +282,22 @@ public class TestELParser {
 
 
     private void doTestParser(String input, String expected) throws 
JasperException {
+        doTestParser(input, expected, input);
+    }
+
+    private void doTestParser(String input, String expectedResult, String 
expectedBuilderOutput) throws JasperException {
+
         ELException elException = null;
         String elResult = null;
 
         // Don't try and evaluate expressions that depend on variables or 
functions
-        if (expected != null) {
+        if (expectedResult != null) {
             try {
                 ExpressionFactory factory = ExpressionFactory.newInstance();
                 ELContext context = new ELContextImpl();
                 ValueExpression ve = factory.createValueExpression(context, 
input, String.class);
                 elResult = ve.getValue(context).toString();
-                Assert.assertEquals(expected, elResult);
+                Assert.assertEquals(expectedResult, elResult);
             } catch (ELException ele) {
                 elException = ele;
             }
@@ -311,6 +318,6 @@ public class TestELParser {
 
         nodes.visit(textBuilder);
 
-        Assert.assertEquals(input, textBuilder.getText());
+        Assert.assertEquals(expectedBuilderOutput, textBuilder.getText());
     }
 }

Modified: tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestParser.java
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestParser.java?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestParser.java 
(original)
+++ tomcat/tc7.0.x/trunk/test/org/apache/jasper/compiler/TestParser.java Tue 
Sep 22 10:51:14 2015
@@ -404,9 +404,9 @@ public class TestParser extends TomcatBa
         Assert.assertTrue(result, result.contains("<set 
data-value=\"03b\\\\x\\?resize03b\"/>"));
         Assert.assertTrue(result, result.contains("<04a\\?resize04a/>"));
         Assert.assertTrue(result, result.contains("<04b\\\\x\\?resize04b/>"));
-        Assert.assertTrue(result, result.contains("<set 
data-value=\"05a\\$${&amp;\"/>"));
-        Assert.assertTrue(result, result.contains("<set 
data-value=\"05b\\$${&amp;2\"/>"));
-        Assert.assertTrue(result, result.contains("<set 
data-value=\"05c\\##{&gt;hello&lt;\"/>"));
+        Assert.assertTrue(result, result.contains("<set 
data-value=\"05a$${&amp;\"/>"));
+        Assert.assertTrue(result, result.contains("<set 
data-value=\"05b$${&amp;2\"/>"));
+        Assert.assertTrue(result, result.contains("<set 
data-value=\"05c##{&gt;hello&lt;\"/>"));
         Assert.assertTrue(result, result.contains("05x:<set 
data-value=\"\"/>"));
         Assert.assertTrue(result, result.contains("<set 
xmlns:foo=\"urn:06a\\bar\\baz\"/>"));
         Assert.assertTrue(result, result.contains("07a:<set 
data-value=\"\\?resize\"/>"));

Modified: tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45427.jsp
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45427.jsp?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45427.jsp (original)
+++ tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45427.jsp Tue Sep 22 
10:51:14 2015
@@ -21,21 +21,19 @@
     <p>00-${'hello world'}</p>
     <p>01-${'hello \'world'}</p>
     <p>02-${'hello "world'}</p>
-    <p>03-${"hello world"}</p>
-    <p>04-${"hello 'world"}</p>
-    <p>05-${"hello \"world"}</p>
+    <p>03-${'hello \"world'}</p>
+    <p>04-${"hello world"}</p>
+    <p>05-${"hello 'world"}</p>
+    <p>06-${"hello \'world"}</p>
+    <p>07-${"hello \"world"}</p>
 
-    <tags:echo echo="06-${'hello world'}" />
-    <tags:echo echo="07-${'hello \\\'world'}" />
-    <tags:echo echo="08-${'hello \"world'}" />
-    <tags:echo echo="09-${\"hello world\"}" />
-    <tags:echo echo="10-${\"hello 'world\"}" />
-    <tags:echo echo="11-${\"hello \\\"world\"}" />
-    <tags:echo echo='12-${\'hello world\'}' />
-    <tags:echo echo='13-${\'hello \\\'world\'}' />
-    <tags:echo echo='14-${\'hello "world\'}' />
-    <tags:echo echo='15-${"hello world"}' />
-    <tags:echo echo='16-${"hello \'world"}' />
-    <tags:echo echo='17-${"hello \\\"world"}' />
+    <tags:echo echo="08-${'hello world'}" />
+    <tags:echo echo="09-${'hello \'world'}" />
+    <tags:echo echo="10-${'hello "world'}" />
+    <tags:echo echo="11-${'hello \"world'}" />
+    <tags:echo echo='12-${"hello world"}' />
+    <tags:echo echo='13-${"hello 'world"}' />
+    <tags:echo echo='14-${"hello \'world"}' />
+    <tags:echo echo='15-${"hello \"world"}' />
   </body>
 </html>
\ No newline at end of file

Modified: tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451.jspf
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451.jspf?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451.jspf (original)
+++ tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451.jspf Tue Sep 22 
10:51:14 2015
@@ -19,14 +19,20 @@
 <p>02-\\${1+1}</p>
 <p>03-\\\${1+1}</p>
 <p>04-\$500</p>
+<p>05-${'\\$'}</p>
+<p>06-${'\\${'}</p>
 <tags:echo echo="10-${1+1}" />
 <tags:echo echo="11-\${1+1}" />
 <tags:echo echo="12-\\${1+1}" />
 <tags:echo echo="13-\\\${1+1}" />
 <tags:echo echo="14-\\\\${1+1}" />
 <tags:echo echo="15-\$500" />
+<tags:echo echo="16-${'\\$'}" />
+<tags:echo echo="17-${'\\${'}" />
 <tags:echo-deferred echo="20-#{1+1}" />
 <tags:echo-deferred echo="21-\#{1+1}" />
 <tags:echo-deferred echo="22-\\#{1+1}" />
 <tags:echo-deferred echo="23-\\\#{1+1}" />
-<tags:echo-deferred echo="24-\\\\#{1+1}" />
\ No newline at end of file
+<tags:echo-deferred echo="24-\\\\#{1+1}" />
+<tags:echo-deferred echo="25-#{'\\#'}" />
+<tags:echo-deferred echo="26-#{'\\#{'}" />
\ No newline at end of file

Modified: tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451a.jsp
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451a.jsp?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451a.jsp (original)
+++ tomcat/tc7.0.x/trunk/test/webapp-3.0/bug45nnn/bug45451a.jsp Tue Sep 22 
10:51:14 2015
@@ -19,8 +19,6 @@
   <head><title>Bug 45451 test case</title></head>
   <body>
     <tags:echo echo="00-\\\'${'hello world'}\\\'" />
-    <tags:echo echo="01-\\\'${\"hello world\"}\\\'" />
-    <tags:echo echo='02-\\\'${\'hello world\'}\\\'' />
-    <tags:echo echo='03-\\\'${"hello world"}\\\'' />
+    <tags:echo echo='01-\\\'${"hello world"}\\\'' />
   </body>
 </html>
\ No newline at end of file

Modified: tomcat/tc7.0.x/trunk/test/webapp-3.0/el-method.jsp
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/webapp-3.0/el-method.jsp?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/webapp-3.0/el-method.jsp (original)
+++ tomcat/tc7.0.x/trunk/test/webapp-3.0/el-method.jsp Tue Sep 22 10:51:14 2015
@@ -28,10 +28,10 @@
     pageContext.setAttribute("testBeanA", beanA, PageContext.REQUEST_SCOPE);
     pageContext.setAttribute("testBeanB", beanB, PageContext.REQUEST_SCOPE);
     %>
-    <tags:echo echo="00-${testBeanA[\"bean\"].sayHello('JUnit')}" />
+    <tags:echo echo="00-${testBeanA["bean"].sayHello('JUnit')}" />
     <tags:echo echo="01-${testBeanA.bean.sayHello('JUnit')}" />
     <tags:echo echo="02-${testBeanB.sayHello('JUnit')}" />
-    <tags:echo-deferred echo="03-#{testBeanA[\"bean\"].sayHello('JUnit')}" />
+    <tags:echo-deferred echo="03-#{testBeanA["bean"].sayHello('JUnit')}" />
     <tags:echo-deferred echo="04-#{testBeanA.bean.sayHello('JUnit')}" />
     <tags:echo-deferred echo="05-#{testBeanB.sayHello('JUnit')}" />
   </body>

Modified: tomcat/tc7.0.x/trunk/test/webapp-3.0/el-misc.jsp
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/webapp-3.0/el-misc.jsp?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/test/webapp-3.0/el-misc.jsp (original)
+++ tomcat/tc7.0.x/trunk/test/webapp-3.0/el-misc.jsp Tue Sep 22 10:51:14 2015
@@ -25,16 +25,16 @@
     <tags:echo echo="${'2'}az-04" />
     <tags:echo echo="05-a${'2'}z" />
     <tags:echo echo="06-az${'2'}" />
-    <tags:echo echo="${\"2\"}az-07" />
-    <tags:echo echo="08-a${\"2\"}z" />
-    <tags:echo echo="09-az${\"2\"}" />
+    <tags:echo echo="${"2"}az-07" />
+    <tags:echo echo="08-a${"2"}z" />
+    <tags:echo echo="09-az${"2"}" />
     <tags:echo echo="10-\${'foo'}${'bar'}" />
-    <tags:echo echo="11-${\"\\\"}\"}" />
+    <tags:echo echo="11-${"\\"}\"}" />
     <tags:echo echo="12-${'foo'}\\${'bar'}\\${'baz'}" />
-    <tags:echo echo="13-${'foo'}\\${\"bar\"}\\${'baz'}" />
-    <tags:echo echo="14-${\"foo\"}\\${'bar'}\\${\"baz\"}" />
-    <tags:echo echo='15-${\'foo\'}\\${"bar"}\\${\'baz\'}' />
-    <tags:echo echo='16-${"foo"}\\${\'bar\'}\\${"baz"}' />
-    <tags:echo echo='17-${"foo"}\\${&apos;bar&apos;}\\${&quot;baz&quot;}' />
+    <tags:echo echo="13-${'foo'}\\${"bar"}\\${'baz'}" />
+    <tags:echo echo="14-${"foo"}\\${'bar'}\\${"baz"}" />
+    <tags:echo echo='15-${'foo'}\\${"bar"}\\${'baz'}' />
+    <tags:echo echo='16-${"foo"}\\${'bar'}\\${"baz"}' />
+    <tags:echo echo='17-${"foo"}\\${"&apos;bar&apos;"}\\${"&quot;baz&quot;"}' 
/>
   </body>
 </html>
\ No newline at end of file

Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1704572&r1=1704571&r2=1704572&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Tue Sep 22 10:51:14 2015
@@ -135,6 +135,15 @@
   <subsection name="Jasper">
     <changelog>
       <fix>
+        <bug>57136</bug>: Correct a regression in the previous fix for this
+        issue. <code>\${</code> should only an escape for <code>${</code> 
within
+        an EL expression. Within a JSP page <code>\$</code> should be an escape
+        for <code>$</code>. The EL specification applies when parsing the
+        expression delimited by <code>${</code> and <code>}</code>. Parsing of
+        the delimiting <code>${</code> and <code>}</code> is the responsibility
+        of the JSP specification. (markt)
+      </fix>
+      <fix>
         <bug>58296</bug>: Fix a memory leak in the JSP unloading feature that
         meant that using a value other than <code>-1</code> for
         <code>maxLoadedJsps</code> triggered a memory leak once the limit was



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to