[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
darin
darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 07:26:36 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit bf570ed4c633d407dfd2358e1d8c02d1cf2b8a83
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Fri Feb 28 23:10:18 2003 +0000
Reviewed by Dave.
- fixed some storage leaks; this code is still leaking when we run cvs-base
* khtml/css/parser.y:
(import): Use the new maybe_media_list (ported from KDE), and delete the
media list if the current item we are parsing is not a style sheet.
(maybe_media_list): Added. (ported from KDE).
(media_list): Added error case so we don't leak in that case (ported from KDE).
(media): Use media_list instead of media_list2 (ported from KDE).
(selector_list): Added error case so we don't leak in that case (ported from KDE).
(selector): Added error case so we don't leak in that case (ported from KDE).
(simple_selector): Added nil-checking (ported from KDE).
(element_name): Use 0xFFFF instead of -1 (ported from KDE).
(specifier_list): Added error case so we don't leak in that case (ported from KDE).
(declaration): Delete the expr if we don't use it because property is 0.
(expr): Added error case so we don't leak in that case (ported from KDE).
* khtml/css/cssparser.cpp:
(CSSParser::parseSheet): Delete the rule in case one was created.
(CSSParser::parseRule): Zero out the rule after extracting it to return.
(CSSParser::parseValue): Delete the rule in case one was created.
(CSSParser::parseDeclaration): Delete the rule in case one was created.
* khtml/css/parser.cpp: Regenerated.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3718 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index fb2953b..f104452 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,31 @@
+2003-02-28 Darin Adler <darin at apple.com>
+
+ Reviewed by Dave.
+
+ - fixed some storage leaks; this code is still leaking when we run cvs-base
+
+ * khtml/css/parser.y:
+ (import): Use the new maybe_media_list (ported from KDE), and delete the
+ media list if the current item we are parsing is not a style sheet.
+ (maybe_media_list): Added. (ported from KDE).
+ (media_list): Added error case so we don't leak in that case (ported from KDE).
+ (media): Use media_list instead of media_list2 (ported from KDE).
+ (selector_list): Added error case so we don't leak in that case (ported from KDE).
+ (selector): Added error case so we don't leak in that case (ported from KDE).
+ (simple_selector): Added nil-checking (ported from KDE).
+ (element_name): Use 0xFFFF instead of -1 (ported from KDE).
+ (specifier_list): Added error case so we don't leak in that case (ported from KDE).
+ (declaration): Delete the expr if we don't use it because property is 0.
+ (expr): Added error case so we don't leak in that case (ported from KDE).
+
+ * khtml/css/cssparser.cpp:
+ (CSSParser::parseSheet): Delete the rule in case one was created.
+ (CSSParser::parseRule): Zero out the rule after extracting it to return.
+ (CSSParser::parseValue): Delete the rule in case one was created.
+ (CSSParser::parseDeclaration): Delete the rule in case one was created.
+
+ * khtml/css/parser.cpp: Regenerated.
+
2003-02-28 David Hyatt <hyatt at apple.com>
Fix for text-dec regression, 3185121.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index fb2953b..f104452 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,31 @@
+2003-02-28 Darin Adler <darin at apple.com>
+
+ Reviewed by Dave.
+
+ - fixed some storage leaks; this code is still leaking when we run cvs-base
+
+ * khtml/css/parser.y:
+ (import): Use the new maybe_media_list (ported from KDE), and delete the
+ media list if the current item we are parsing is not a style sheet.
+ (maybe_media_list): Added. (ported from KDE).
+ (media_list): Added error case so we don't leak in that case (ported from KDE).
+ (media): Use media_list instead of media_list2 (ported from KDE).
+ (selector_list): Added error case so we don't leak in that case (ported from KDE).
+ (selector): Added error case so we don't leak in that case (ported from KDE).
+ (simple_selector): Added nil-checking (ported from KDE).
+ (element_name): Use 0xFFFF instead of -1 (ported from KDE).
+ (specifier_list): Added error case so we don't leak in that case (ported from KDE).
+ (declaration): Delete the expr if we don't use it because property is 0.
+ (expr): Added error case so we don't leak in that case (ported from KDE).
+
+ * khtml/css/cssparser.cpp:
+ (CSSParser::parseSheet): Delete the rule in case one was created.
+ (CSSParser::parseRule): Zero out the rule after extracting it to return.
+ (CSSParser::parseValue): Delete the rule in case one was created.
+ (CSSParser::parseDeclaration): Delete the rule in case one was created.
+
+ * khtml/css/parser.cpp: Regenerated.
+
2003-02-28 David Hyatt <hyatt at apple.com>
Fix for text-dec regression, 3185121.
diff --git a/WebCore/khtml/css/cssparser.cpp b/WebCore/khtml/css/cssparser.cpp
index b8c9819..2961d90 100644
--- a/WebCore/khtml/css/cssparser.cpp
+++ b/WebCore/khtml/css/cssparser.cpp
@@ -150,6 +150,9 @@ void CSSParser::parseSheet( CSSStyleSheetImpl *sheet, const DOMString &string )
#ifdef CSS_DEBUG
kdDebug( 6080 ) << "<<<<<<< done parsing style sheet" << endl;
#endif
+
+ delete rule;
+ rule = 0;
}
CSSRuleImpl *CSSParser::parseRule( const DOM::DOMString &string )
@@ -170,12 +173,15 @@ CSSRuleImpl *CSSParser::parseRule( const DOM::DOMString &string )
yytext = yy_c_buf_p = data;
yy_hold_char = *yy_c_buf_p;
-
CSSParser *old = currentParser;
currentParser = this;
cssyyparse( this );
currentParser = old;
- return rule;
+
+ CSSRuleImpl *result = rule;
+ rule = 0;
+
+ return result;
}
bool CSSParser::parseValue( DOM::CSSStyleDeclarationImpl *declaration, int _id, const DOM::DOMString &string,
@@ -212,6 +218,9 @@ bool CSSParser::parseValue( DOM::CSSStyleDeclarationImpl *declaration, int _id,
currentParser = this;
cssyyparse( this );
currentParser = old;
+
+ delete rule;
+ rule = 0;
bool ok = false;
if ( numParsedProperties ) {
@@ -259,6 +268,9 @@ bool CSSParser::parseDeclaration( DOM::CSSStyleDeclarationImpl *declaration, con
cssyyparse( this );
currentParser = old;
+ delete rule;
+ rule = 0;
+
bool ok = false;
if ( numParsedProperties ) {
ok = true;
diff --git a/WebCore/khtml/css/parser.cpp b/WebCore/khtml/css/parser.cpp
index 4a4a867..6fdea62 100644
--- a/WebCore/khtml/css/parser.cpp
+++ b/WebCore/khtml/css/parser.cpp
@@ -284,20 +284,20 @@ static const short yyrhs[] = { 66,
#if YYDEBUG != 0
static const short yyrline[] = { 0,
- 225, 227, 228, 229, 232, 239, 245, 270, 272, 275,
- 277, 278, 281, 283, 288, 289, 292, 294, 305, 307,
- 317, 319, 320, 321, 322, 323, 326, 337, 340, 345,
- 347, 350, 354, 358, 365, 379, 384, 391, 393, 402,
- 424, 428, 433, 437, 442, 444, 445, 448, 450, 453,
- 473, 487, 503, 507, 524, 529, 533, 539, 560, 565,
- 570, 580, 587, 588, 589, 592, 601, 625, 631, 639,
- 643, 646, 649, 652, 655, 660, 662, 665, 671, 679,
- 683, 688, 691, 697, 705, 709, 715, 721, 726, 732,
- 740, 763, 770, 772, 775, 780, 793, 797, 800, 805,
- 807, 808, 809, 815, 816, 817, 819, 824, 826, 827,
- 828, 829, 830, 831, 832, 833, 834, 835, 836, 837,
- 838, 839, 840, 841, 842, 843, 847, 862, 869, 876,
- 884, 910, 912, 915, 917
+ 225, 227, 228, 229, 232, 240, 246, 271, 273, 276,
+ 278, 279, 282, 284, 289, 290, 293, 295, 306, 308,
+ 318, 320, 321, 322, 323, 324, 327, 340, 343, 348,
+ 350, 353, 357, 361, 368, 382, 387, 394, 396, 405,
+ 427, 431, 436, 440, 445, 447, 448, 451, 453, 456,
+ 476, 490, 506, 510, 527, 532, 536, 542, 563, 568,
+ 573, 583, 590, 591, 592, 595, 604, 628, 634, 642,
+ 646, 649, 652, 655, 658, 663, 665, 668, 674, 682,
+ 686, 691, 694, 700, 708, 712, 718, 724, 729, 735,
+ 743, 768, 775, 777, 780, 785, 798, 802, 805, 810,
+ 812, 813, 814, 820, 821, 822, 824, 829, 831, 832,
+ 833, 834, 835, 836, 837, 838, 839, 840, 841, 842,
+ 843, 844, 845, 846, 847, 848, 852, 867, 874, 881,
+ 889, 915, 917, 920, 922
};
#endif
@@ -1056,17 +1056,18 @@ case 5:
#line 233 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
- p->rule = yyvsp[-2].rule;
+ delete p->rule;
+ p->rule = yyvsp[-2].rule;
;
break;}
case 6:
-#line 240 "parser.y"
+#line 241 "parser.y"
{
/* can be empty */
;
break;}
case 7:
-#line 246 "parser.y"
+#line 247 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-1].valueList ) {
@@ -1091,7 +1092,7 @@ case 7:
;
break;}
case 14:
-#line 283 "parser.y"
+#line 284 "parser.y"
{
#ifdef CSS_DEBUG
kdDebug( 6080 ) << "charset rule: " << qString(yyvsp[-2].string) << endl;
@@ -1099,7 +1100,7 @@ case 14:
;
break;}
case 18:
-#line 294 "parser.y"
+#line 295 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-1].rule && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
@@ -1110,7 +1111,7 @@ case 18:
;
break;}
case 20:
-#line 307 "parser.y"
+#line 308 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-1].rule && p->styleElement && p->styleElement->isCSSStyleSheet() ) {
@@ -1121,7 +1122,7 @@ case 20:
;
break;}
case 27:
-#line 327 "parser.y"
+#line 328 "parser.y"
{
#ifdef CSS_DEBUG
kdDebug( 6080 ) << "@import: " << qString(yyvsp[-3].string) << endl;
@@ -1129,37 +1130,39 @@ case 27:
CSSParser *p = static_cast<CSSParser *>(parser);
if ( p->styleElement && p->styleElement->isCSSStyleSheet() )
yyval.rule = new CSSImportRuleImpl( p->styleElement, domString(yyvsp[-3].string), yyvsp[-1].mediaList );
- else
+ else {
yyval.rule = 0;
+ delete yyvsp[-1].mediaList;
+ }
;
break;}
case 28:
-#line 337 "parser.y"
+#line 340 "parser.y"
{
yyval.rule = 0;
;
break;}
case 29:
-#line 340 "parser.y"
+#line 343 "parser.y"
{
yyval.rule = 0;
;
break;}
case 32:
-#line 351 "parser.y"
+#line 354 "parser.y"
{
yyval.mediaList = 0;
;
break;}
case 33:
-#line 354 "parser.y"
+#line 357 "parser.y"
{
yyval.mediaList = new MediaListImpl();
yyval.mediaList->appendMedium( domString(yyvsp[0].string) );
;
break;}
case 34:
-#line 358 "parser.y"
+#line 361 "parser.y"
{
yyval.mediaList = yyvsp[-3].mediaList;
if ( !yyval.mediaList ) yyval.mediaList = new MediaListImpl();
@@ -1167,7 +1170,7 @@ case 34:
;
break;}
case 35:
-#line 366 "parser.y"
+#line 369 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
if ( yyvsp[-4].mediaList && yyvsp[-1].ruleList &&
@@ -1181,25 +1184,25 @@ case 35:
;
break;}
case 36:
-#line 380 "parser.y"
+#line 383 "parser.y"
{
yyval.mediaList = new MediaListImpl();
yyval.mediaList->appendMedium( domString(yyvsp[0].string) );
;
break;}
case 37:
-#line 384 "parser.y"
+#line 387 "parser.y"
{
yyval.mediaList = yyvsp[-3].mediaList;
yyval.mediaList->appendMedium( domString(yyvsp[0].string) );
;
break;}
case 38:
-#line 392 "parser.y"
+#line 395 "parser.y"
{ yyval.ruleList = 0; ;
break;}
case 39:
-#line 393 "parser.y"
+#line 396 "parser.y"
{
yyval.ruleList = yyvsp[-2].ruleList;
if ( yyvsp[-1].rule ) {
@@ -1209,57 +1212,57 @@ case 39:
;
break;}
case 40:
-#line 403 "parser.y"
+#line 406 "parser.y"
{
yyval.string = yyvsp[-1].string;
;
break;}
case 41:
-#line 425 "parser.y"
+#line 428 "parser.y"
{
yyval.rule = 0;
;
break;}
case 42:
-#line 428 "parser.y"
+#line 431 "parser.y"
{
yyval.rule = 0;
;
break;}
case 43:
-#line 434 "parser.y"
+#line 437 "parser.y"
{
yyval.rule = 0;
;
break;}
case 44:
-#line 437 "parser.y"
+#line 440 "parser.y"
{
yyval.rule = 0;
;
break;}
case 45:
-#line 443 "parser.y"
+#line 446 "parser.y"
{ yyval.relation = CSSSelector::Sibling; ;
break;}
case 46:
-#line 444 "parser.y"
+#line 447 "parser.y"
{ yyval.relation = CSSSelector::Child; ;
break;}
case 47:
-#line 445 "parser.y"
+#line 448 "parser.y"
{ yyval.relation = CSSSelector::Descendant; ;
break;}
case 48:
-#line 449 "parser.y"
+#line 452 "parser.y"
{ yyval.val = -1; ;
break;}
case 49:
-#line 450 "parser.y"
+#line 453 "parser.y"
{ yyval.val = 1; ;
break;}
case 50:
-#line 454 "parser.y"
+#line 457 "parser.y"
{
#ifdef CSS_DEBUG
kdDebug( 6080 ) << "got ruleset" << endl << " selector:" << endl;
@@ -1279,7 +1282,7 @@ case 50:
;
break;}
case 51:
-#line 474 "parser.y"
+#line 477 "parser.y"
{
if ( yyvsp[0].selector ) {
yyval.selectorList = new QPtrList<CSSSelector>;
@@ -1295,7 +1298,7 @@ case 51:
;
break;}
case 52:
-#line 487 "parser.y"
+#line 490 "parser.y"
{
yyval.selectorList = yyvsp[-3].selectorList;
if ( yyvsp[0].selector ) {
@@ -1312,13 +1315,13 @@ case 52:
;
break;}
case 53:
-#line 504 "parser.y"
+#line 507 "parser.y"
{
yyval.selector = yyvsp[0].selector;
;
break;}
case 54:
-#line 507 "parser.y"
+#line 510 "parser.y"
{
yyval.selector = yyvsp[0].selector;
CSSSelector *end = yyvsp[0].selector;
@@ -1336,28 +1339,28 @@ DOM::DocumentImpl *doc = p->document();
;
break;}
case 55:
-#line 525 "parser.y"
+#line 528 "parser.y"
{
yyval.selector = new CSSSelector();
yyval.selector->tag = yyvsp[-1].element;
;
break;}
case 56:
-#line 529 "parser.y"
+#line 532 "parser.y"
{
yyval.selector = yyvsp[-1].selector;
yyval.selector->tag = yyvsp[-2].element;
;
break;}
case 57:
-#line 533 "parser.y"
+#line 536 "parser.y"
{
yyval.selector = yyvsp[-1].selector;
yyval.selector->tag = -1;
;
break;}
case 58:
-#line 540 "parser.y"
+#line 543 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
DOM::DocumentImpl *doc = p->document();
@@ -1380,20 +1383,20 @@ case 58:
;
break;}
case 59:
-#line 560 "parser.y"
+#line 563 "parser.y"
{
yyval.element = -1;
;
break;}
case 60:
-#line 566 "parser.y"
+#line 569 "parser.y"
{
yyval.selector = yyvsp[0].selector;
yyval.selector->nonCSSHint = static_cast<CSSParser *>(parser)->nonCSSHint;
;
break;}
case 61:
-#line 570 "parser.y"
+#line 573 "parser.y"
{
yyval.selector = yyvsp[-1].selector;
CSSSelector *end = yyvsp[-1].selector;
@@ -1404,7 +1407,7 @@ case 61:
;
break;}
case 62:
-#line 581 "parser.y"
+#line 584 "parser.y"
{
yyval.selector = new CSSSelector();
yyval.selector->match = CSSSelector::Id;
@@ -1413,7 +1416,7 @@ case 62:
;
break;}
case 66:
-#line 593 "parser.y"
+#line 596 "parser.y"
{
yyval.selector = new CSSSelector();
yyval.selector->match = CSSSelector::List;
@@ -1422,7 +1425,7 @@ case 66:
;
break;}
case 67:
-#line 602 "parser.y"
+#line 605 "parser.y"
{
CSSParser *p = static_cast<CSSParser *>(parser);
DOM::DocumentImpl *doc = p->document();
@@ -1446,7 +1449,7 @@ case 67:
;
break;}
case 68:
-#line 626 "parser.y"
+#line 629 "parser.y"
{
yyval.selector = new CSSSelector();
yyval.selector->attr = yyvsp[-1].attribute;
@@ -1454,7 +1457,7 @@ case 68:
;
break;}
case 69:
-#line 631 "parser.y"
+#line 634 "parser.y"
{
yyval.selector = new CSSSelector();
yyval.selector->attr = yyvsp[-5].attribute;
@@ -1463,43 +1466,43 @@ case 69:
;
break;}
case 70:
-#line 640 "parser.y"
+#line 643 "parser.y"
{
yyval.val = CSSSelector::Exact;
;
break;}
case 71:
-#line 643 "parser.y"
+#line 646 "parser.y"
{
yyval.val = CSSSelector::List;
;
break;}
case 72:
-#line 646 "parser.y"
+#line 649 "parser.y"
{
yyval.val = CSSSelector::Hyphen;
;
break;}
case 73:
-#line 649 "parser.y"
+#line 652 "parser.y"
{
yyval.val = CSSSelector::Begin;
;
break;}
case 74:
-#line 652 "parser.y"
+#line 655 "parser.y"
{
yyval.val = CSSSelector::End;
;
break;}
case 75:
-#line 655 "parser.y"
+#line 658 "parser.y"
{
yyval.val = CSSSelector::Contain;
;
break;}
case 78:
-#line 666 "parser.y"
+#line 669 "parser.y"
{
yyval.selector = new CSSSelector();
yyval.selector->match = CSSSelector::Pseudo;
@@ -1507,7 +1510,7 @@ case 78:
;
break;}
case 79:
-#line 671 "parser.y"
+#line 674 "parser.y"
{
yyval.selector = new CSSSelector();
yyval.selector->match = CSSSelector::Pseudo;
@@ -1516,13 +1519,13 @@ case 79:
;
break;}
case 80:
-#line 680 "parser.y"
+#line 683 "parser.y"
{
yyval.ok = yyvsp[0].ok;
;
break;}
case 81:
-#line 683 "parser.y"
+#line 686 "parser.y"
{
yyval.ok = yyvsp[-1].ok;
if ( yyvsp[0].ok )
@@ -1530,13 +1533,13 @@ case 81:
;
break;}
case 82:
-#line 688 "parser.y"
+#line 691 "parser.y"
{
yyval.ok = yyvsp[0].ok;
;
break;}
case 83:
-#line 691 "parser.y"
+#line 694 "parser.y"
{
yyval.ok = false;
#ifdef CSS_DEBUG
@@ -1545,7 +1548,7 @@ case 83:
;
break;}
case 84:
-#line 697 "parser.y"
+#line 700 "parser.y"
{
yyval.ok = false;
#ifdef CSS_DEBUG
@@ -1554,13 +1557,13 @@ case 84:
;
break;}
case 85:
-#line 706 "parser.y"
+#line 709 "parser.y"
{
yyval.ok = yyvsp[-2].ok;
;
break;}
case 86:
-#line 709 "parser.y"
+#line 712 "parser.y"
{
yyval.ok = false;
#ifdef CSS_DEBUG
@@ -1569,7 +1572,7 @@ case 86:
;
break;}
case 87:
-#line 715 "parser.y"
+#line 718 "parser.y"
{
yyval.ok = false;
#ifdef CSS_DEBUG
@@ -1578,7 +1581,7 @@ case 87:
;
break;}
case 88:
-#line 721 "parser.y"
+#line 724 "parser.y"
{
yyval.ok = yyvsp[-3].ok;
if ( yyvsp[-2].ok )
@@ -1586,7 +1589,7 @@ case 88:
;
break;}
case 89:
-#line 726 "parser.y"
+#line 729 "parser.y"
{
yyval.ok = yyvsp[-3].ok;
#ifdef CSS_DEBUG
@@ -1595,7 +1598,7 @@ case 89:
;
break;}
case 90:
-#line 732 "parser.y"
+#line 735 "parser.y"
{
yyval.ok = yyvsp[-5].ok;
#ifdef CSS_DEBUG
@@ -1604,7 +1607,7 @@ case 90:
;
break;}
case 91:
-#line 741 "parser.y"
+#line 744 "parser.y"
{
yyval.ok = false;
CSSParser *p = static_cast<CSSParser *>(parser);
@@ -1621,35 +1624,37 @@ case 91:
else
kdDebug( 6080 ) << " couldn't parse value!" << endl;
#endif
- }
+ } else {
+ delete yyvsp[-1].valueList;
+ }
delete p->valueList;
p->valueList = 0;
;
break;}
case 92:
-#line 764 "parser.y"
+#line 769 "parser.y"
{
QString str = qString(yyvsp[-1].string);
yyval.prop_id = getPropertyID( str.lower().latin1(), str.length() );
;
break;}
case 93:
-#line 771 "parser.y"
+#line 776 "parser.y"
{ yyval.b = true; ;
break;}
case 94:
-#line 772 "parser.y"
+#line 777 "parser.y"
{ yyval.b = false; ;
break;}
case 95:
-#line 776 "parser.y"
+#line 781 "parser.y"
{
yyval.valueList = new ValueList;
yyval.valueList->addValue( yyvsp[0].value );
;
break;}
case 96:
-#line 780 "parser.y"
+#line 785 "parser.y"
{
yyval.valueList = yyvsp[-2].valueList;
if ( yyvsp[-1].tok ) {
@@ -1663,37 +1668,37 @@ case 96:
;
break;}
case 97:
-#line 794 "parser.y"
+#line 799 "parser.y"
{
yyval.tok = '/';
;
break;}
case 98:
-#line 797 "parser.y"
+#line 802 "parser.y"
{
yyval.tok = ',';
;
break;}
case 99:
-#line 800 "parser.y"
+#line 805 "parser.y"
{
yyval.tok = 0;
;
break;}
case 100:
-#line 806 "parser.y"
+#line 811 "parser.y"
{ yyval.value = yyvsp[0].value; ;
break;}
case 101:
-#line 807 "parser.y"
+#line 812 "parser.y"
{ yyval.value = yyvsp[0].value; yyval.value.fValue *= yyvsp[-1].val; ;
break;}
case 102:
-#line 808 "parser.y"
+#line 813 "parser.y"
{ yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_STRING; ;
break;}
case 103:
-#line 809 "parser.y"
+#line 814 "parser.y"
{
QString str = qString( yyvsp[-1].string );
yyval.value.id = getValueID( str.lower().latin1(), str.length() );
@@ -1702,101 +1707,101 @@ case 103:
;
break;}
case 104:
-#line 815 "parser.y"
+#line 820 "parser.y"
{ yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_URI; ;
break;}
case 105:
-#line 816 "parser.y"
+#line 821 "parser.y"
{ yyval.value.id = 0; yyval.value.iValue = 0; yyval.value.unit = CSSPrimitiveValue::CSS_UNKNOWN;/* ### */ ;
break;}
case 106:
-#line 817 "parser.y"
+#line 822 "parser.y"
{ yyval.value.id = 0; yyval.value.string = yyvsp[0].string; yyval.value.unit = CSSPrimitiveValue::CSS_RGBCOLOR; ;
break;}
case 107:
-#line 819 "parser.y"
+#line 824 "parser.y"
{
yyval.value = yyvsp[0].value;
;
break;}
case 108:
-#line 825 "parser.y"
+#line 830 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_NUMBER; ;
break;}
case 109:
-#line 826 "parser.y"
+#line 831 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PERCENTAGE; ;
break;}
case 110:
-#line 827 "parser.y"
+#line 832 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PX; ;
break;}
case 111:
-#line 828 "parser.y"
+#line 833 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_CM; ;
break;}
case 112:
-#line 829 "parser.y"
+#line 834 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_MM; ;
break;}
case 113:
-#line 830 "parser.y"
+#line 835 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_IN; ;
break;}
case 114:
-#line 831 "parser.y"
+#line 836 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PT; ;
break;}
case 115:
-#line 832 "parser.y"
+#line 837 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PC; ;
break;}
case 116:
-#line 833 "parser.y"
+#line 838 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_DEG; ;
break;}
case 117:
-#line 834 "parser.y"
+#line 839 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_RAD; ;
break;}
case 118:
-#line 835 "parser.y"
+#line 840 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_GRAD; ;
break;}
case 119:
-#line 836 "parser.y"
+#line 841 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_MS; ;
break;}
case 120:
-#line 837 "parser.y"
+#line 842 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_S; ;
break;}
case 121:
-#line 838 "parser.y"
+#line 843 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_HZ; ;
break;}
case 122:
-#line 839 "parser.y"
+#line 844 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_KHZ; ;
break;}
case 123:
-#line 840 "parser.y"
+#line 845 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_EMS; ;
break;}
case 124:
-#line 841 "parser.y"
+#line 846 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = Value::Q_EMS; ;
break;}
case 125:
-#line 842 "parser.y"
+#line 847 "parser.y"
{ yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_EXS; ;
break;}
case 126:
-#line 843 "parser.y"
+#line 848 "parser.y"
{ yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_DIMENSION ;
break;}
case 127:
-#line 848 "parser.y"
+#line 853 "parser.y"
{
Function *f = new Function;
f->name = yyvsp[-4].string;
@@ -1807,11 +1812,11 @@ case 127:
;
break;}
case 128:
-#line 863 "parser.y"
+#line 868 "parser.y"
{ yyval.string = yyvsp[-1].string; ;
break;}
case 129:
-#line 870 "parser.y"
+#line 875 "parser.y"
{
yyval.rule = 0;
#ifdef CSS_DEBUG
@@ -1820,7 +1825,7 @@ case 129:
;
break;}
case 130:
-#line 876 "parser.y"
+#line 881 "parser.y"
{
yyval.rule = 0;
#ifdef CSS_DEBUG
@@ -1829,7 +1834,7 @@ case 130:
;
break;}
case 131:
-#line 885 "parser.y"
+#line 890 "parser.y"
{
yyval.rule = 0;
#ifdef CSS_DEBUG
@@ -2059,6 +2064,6 @@ yyerrhandle:
}
return 1;
}
-#line 920 "parser.y"
+#line 925 "parser.y"
diff --git a/WebCore/khtml/css/parser.y b/WebCore/khtml/css/parser.y
index 0ec81fd..9f1b433 100644
--- a/WebCore/khtml/css/parser.y
+++ b/WebCore/khtml/css/parser.y
@@ -186,7 +186,7 @@ static int cssyylex( YYSTYPE *yylval ) {
%type <string> hexcolor
%type <mediaList> media_list
-%type <mediaList> media_list2
+%type <mediaList> maybe_media_list
%type <ruleList> ruleset_list
@@ -232,7 +232,7 @@ stylesheet:
konq_rule:
KONQ_RULE_SYM '{' maybe_space ruleset maybe_space '}' {
CSSParser *p = static_cast<CSSParser *>(parser);
- p->rule = $4;
+ p->rule = $4;
}
;
@@ -324,15 +324,17 @@ rule:
;
import:
- IMPORT_SYM maybe_space string_or_uri maybe_space media_list ';' {
+ IMPORT_SYM maybe_space string_or_uri maybe_space maybe_media_list ';' {
#ifdef CSS_DEBUG
kdDebug( 6080 ) << "@import: " << qString($3) << endl;
#endif
CSSParser *p = static_cast<CSSParser *>(parser);
if ( p->styleElement && p->styleElement->isCSSStyleSheet() )
$$ = new CSSImportRuleImpl( p->styleElement, domString($3), $5 );
- else
+ else {
$$ = 0;
+ delete $5;
+ }
}
| IMPORT_SYM error invalid_block {
$$ = 0;
@@ -347,6 +349,14 @@ string_or_uri:
| URI
;
+maybe_media_list
+ /* empty */ {
+ $$ = 0;
+ }
+ | media_list
+;
+
+
media_list:
/* empty */ {
$$ = 0;
@@ -357,13 +367,16 @@ media_list:
}
| media_list ',' maybe_space medium {
$$ = $1;
- if ( !$$ ) $$ = new MediaListImpl();
$$->appendMedium( domString($4) );
}
-;
+ | media_list error {
+ delete $1;
+ $$ = 0;
+ }
+ ;
media:
- MEDIA_SYM maybe_space media_list2 '{' maybe_space ruleset_list '}' {
+ MEDIA_SYM maybe_space media_list '{' maybe_space ruleset_list '}' {
CSSParser *p = static_cast<CSSParser *>(parser);
if ( $3 && $6 &&
p->styleElement && p->styleElement->isCSSStyleSheet() ) {
@@ -376,18 +389,6 @@ media:
}
;
-media_list2:
- medium {
- $$ = new MediaListImpl();
- $$->appendMedium( domString($1) );
- }
- | media_list ',' maybe_space medium {
- $$ = $1;
- $$->appendMedium( domString($4) );
- }
- ;
-
-
ruleset_list:
/* empty */ { $$ = 0; }
| ruleset_list ruleset maybe_space {
@@ -485,18 +486,22 @@ selector_list:
}
}
| selector_list ',' maybe_space selector {
- $$ = $1;
- if ( $4 ) {
- if ( !$$ ) {
- $$ = new QPtrList<CSSSelector>;
- $$->setAutoDelete(true);
- }
+ if ( $1 && $4 ) {
+ $$ = $1;
$$->append( $4 );
#ifdef CSS_DEBUG
kdDebug( 6080 ) << " got simple selector:" << endl;
$4->print();
#endif
- }
+ } else {
+ delete $1;
+ delete $4;
+ $$ = 0;
+ }
+ }
+ | selector_list error {
+ delete $1;
+ $$ = 0;
}
;
@@ -519,6 +524,10 @@ DOM::DocumentImpl *doc = p->document();
doc->setUsesDescendantRules(true);
}
}
+ | selector error {
+ delete $1;
+ $$ = 0;
+ }
;
simple_selector:
@@ -528,11 +537,13 @@ simple_selector:
}
| element_name specifier_list maybe_space {
$$ = $2;
- $$->tag = $1;
+ if ( $$ )
+ $$->tag = $1;
}
| specifier_list maybe_space {
$$ = $1;
- $$->tag = -1;
+ if ( $$ )
+ $$->tag = 0xffffffff;
}
;
@@ -558,7 +569,7 @@ element_name:
}
}
| '*' {
- $$ = -1;
+ $$ = 0xffff;
}
;
@@ -575,6 +586,10 @@ specifier_list:
end->relation = CSSSelector::SubSelector;
end->tagHistory = $2;
}
+ | specifier_list error {
+ delete $1;
+ $$ = 0;
+ }
;
specifier:
@@ -754,7 +769,9 @@ declaration:
else
kdDebug( 6080 ) << " couldn't parse value!" << endl;
#endif
- }
+ } else {
+ delete $4;
+ }
delete p->valueList;
p->valueList = 0;
}
@@ -778,15 +795,21 @@ expr:
$$->addValue( $1 );
}
| expr operator term {
- $$ = $1;
- if ( $2 ) {
- Value v;
- v.id = 0;
- v.unit = Value::Operator;
- v.iValue = $2;
- $$->addValue( v );
- }
- $$->addValue( $3 );
+ $$ = $1;
+ if ( $$ ) {
+ if ( $2 ) {
+ Value v;
+ v.id = 0;
+ v.unit = Value::Operator;
+ v.iValue = $2;
+ $$->addValue( v );
+ }
+ $$->addValue( $3 );
+ }
+ }
+ | expr error {
+ delete $1;
+ $$ = 0;
}
;
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list