[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:27:05 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 3ce57e2d9fa84c66241cd696a367caab4221ef2b
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Mar 4 00:46:03 2003 +0000

            Reviewed by Dave.
    
            - fixed 3187518 -- REGRESSION: w3c css sample page crashes in cssyyparse
    
            * khtml/css/parser.y: (selector): Added code to handle the case where simple_selector is 0.
            * khtml/css/parser.cpp: Regenerated.
    
            - fixed regression I introduced earlier today where ID anchors wouldn't work
    
            * khtml/khtml_part.cpp: (KHTMLPart::gotoAnchor):
            Check by ID first explicitly before using DOC_ANCHORS.
    
            * WebCore.pbproj/project.pbxproj: Add parser.y to the project to make it easier to open it.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@3735 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index ffc0bcb..072a015 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,19 @@
+2003-03-03  Darin Adler  <darin at apple.com>
+
+        Reviewed by Dave.
+
+        - fixed 3187518 -- REGRESSION: w3c css sample page crashes in cssyyparse
+
+        * khtml/css/parser.y: (selector): Added code to handle the case where simple_selector is 0.
+        * khtml/css/parser.cpp: Regenerated.
+        
+        - fixed regression I introduced earlier today where ID anchors wouldn't work
+        
+        * khtml/khtml_part.cpp: (KHTMLPart::gotoAnchor):
+        Check by ID first explicitly before using DOC_ANCHORS.
+
+        * WebCore.pbproj/project.pbxproj: Add parser.y to the project to make it easier to open it.
+
 2003-03-03  David Hyatt  <hyatt at apple.com>
 
 	Fix for 3185852, crash when dynamically inserting rules because
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index ffc0bcb..072a015 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,19 @@
+2003-03-03  Darin Adler  <darin at apple.com>
+
+        Reviewed by Dave.
+
+        - fixed 3187518 -- REGRESSION: w3c css sample page crashes in cssyyparse
+
+        * khtml/css/parser.y: (selector): Added code to handle the case where simple_selector is 0.
+        * khtml/css/parser.cpp: Regenerated.
+        
+        - fixed regression I introduced earlier today where ID anchors wouldn't work
+        
+        * khtml/khtml_part.cpp: (KHTMLPart::gotoAnchor):
+        Check by ID first explicitly before using DOC_ANCHORS.
+
+        * WebCore.pbproj/project.pbxproj: Add parser.y to the project to make it easier to open it.
+
 2003-03-03  David Hyatt  <hyatt at apple.com>
 
 	Fix for 3185852, crash when dynamically inserting rules because
diff --git a/WebCore/WebCore.pbproj/project.pbxproj b/WebCore/WebCore.pbproj/project.pbxproj
index 8037f48..8685f6f 100644
--- a/WebCore/WebCore.pbproj/project.pbxproj
+++ b/WebCore/WebCore.pbproj/project.pbxproj
@@ -1048,6 +1048,12 @@
 			settings = {
 			};
 		};
+		934E43780414294A008635CE = {
+			fileEncoding = 4;
+			isa = PBXFileReference;
+			path = parser.y;
+			refType = 4;
+		};
 		9377FB55032C235C008635CE = {
 			fileEncoding = 30;
 			isa = PBXFileReference;
@@ -2045,6 +2051,7 @@
 			children = (
 				BC8F61850405949900A80004,
 				BC8F61860405949900A80004,
+				934E43780414294A008635CE,
 				BC8F61870405949900A80004,
 				BC8F618B040594BA00A80004,
 				BC8F618C040594BA00A80004,
diff --git a/WebCore/khtml/css/parser.cpp b/WebCore/khtml/css/parser.cpp
index 2888cc5..e854aee 100644
--- a/WebCore/khtml/css/parser.cpp
+++ b/WebCore/khtml/css/parser.cpp
@@ -290,15 +290,15 @@ static const short yyrline[] = { 0,
    317,   319,   320,   321,   322,   323,   326,   339,   342,   347,
    349,   352,   356,   360,   364,   368,   372,   378,   392,   394,
    403,   425,   429,   434,   438,   443,   445,   446,   449,   451,
-   454,   474,   488,   502,   508,   512,   527,   533,   538,   543,
-   550,   571,   576,   581,   589,   595,   602,   603,   604,   607,
-   616,   640,   646,   654,   658,   661,   664,   667,   670,   675,
-   677,   680,   686,   694,   698,   703,   706,   712,   720,   724,
-   730,   736,   741,   747,   755,   780,   787,   789,   792,   797,
-   810,   816,   820,   823,   828,   830,   831,   832,   838,   839,
-   840,   842,   847,   849,   850,   851,   852,   853,   854,   855,
-   856,   857,   858,   859,   860,   861,   862,   863,   864,   865,
-   866,   870,   885,   892,   899,   907,   933,   935,   938,   940
+   454,   474,   488,   502,   508,   512,   531,   537,   542,   547,
+   554,   575,   580,   585,   593,   599,   606,   607,   608,   611,
+   620,   644,   650,   658,   662,   665,   668,   671,   674,   679,
+   681,   684,   690,   698,   702,   707,   710,   716,   724,   728,
+   734,   740,   745,   751,   759,   784,   791,   793,   796,   801,
+   814,   820,   824,   827,   832,   834,   835,   836,   842,   843,
+   844,   846,   851,   853,   854,   855,   856,   857,   858,   859,
+   860,   861,   862,   863,   864,   865,   866,   867,   868,   869,
+   870,   874,   889,   896,   903,   911,   937,   939,   942,   944
 };
 #endif
 
@@ -1367,36 +1367,40 @@ case 56:
 #line 512 "parser.y"
 {
     	yyval.selector = yyvsp[0].selector;
-        CSSSelector *end = yyvsp[0].selector;
-        while( end->tagHistory )
-            end = end->tagHistory;
-	end->relation = yyvsp[-1].relation;
-	end->tagHistory = yyvsp[-2].selector;
-        if ( yyvsp[-1].relation == CSSSelector::Descendant ||
-             yyvsp[-1].relation == CSSSelector::Child ) {
-            CSSParser *p = static_cast<CSSParser *>(parser);
-DOM::DocumentImpl *doc = p->document();
-            if ( doc )
-                doc->setUsesDescendantRules(true);
+        if (yyval.selector) {
+            CSSSelector *end = yyval.selector;
+            while( end->tagHistory )
+                end = end->tagHistory;
+            end->relation = yyvsp[-1].relation;
+            end->tagHistory = yyvsp[-2].selector;
+            if ( yyvsp[-1].relation == CSSSelector::Descendant ||
+                yyvsp[-1].relation == CSSSelector::Child ) {
+                CSSParser *p = static_cast<CSSParser *>(parser);
+                DOM::DocumentImpl *doc = p->document();
+                if ( doc )
+                    doc->setUsesDescendantRules(true);
+            }
+        } else {
+            delete yyvsp[-2].selector;
         }
     ;
     break;}
 case 57:
-#line 527 "parser.y"
+#line 531 "parser.y"
 {
         delete yyvsp[-1].selector;
         yyval.selector = 0;
     ;
     break;}
 case 58:
-#line 534 "parser.y"
+#line 538 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->tag = yyvsp[-1].element;
     ;
     break;}
 case 59:
-#line 538 "parser.y"
+#line 542 "parser.y"
 {
 	yyval.selector = yyvsp[-1].selector;
 	if ( yyval.selector )
@@ -1404,7 +1408,7 @@ case 59:
     ;
     break;}
 case 60:
-#line 543 "parser.y"
+#line 547 "parser.y"
 {
 	yyval.selector = yyvsp[-1].selector;
 	if ( yyval.selector )
@@ -1412,7 +1416,7 @@ case 60:
     ;
     break;}
 case 61:
-#line 551 "parser.y"
+#line 555 "parser.y"
 {
 	CSSParser *p = static_cast<CSSParser *>(parser);
 	DOM::DocumentImpl *doc = p->document();
@@ -1435,20 +1439,20 @@ case 61:
     ;
     break;}
 case 62:
-#line 571 "parser.y"
+#line 575 "parser.y"
 {
 	yyval.element = 0xffff;
     ;
     break;}
 case 63:
-#line 577 "parser.y"
+#line 581 "parser.y"
 {
 	yyval.selector = yyvsp[0].selector;
 	yyval.selector->nonCSSHint = static_cast<CSSParser *>(parser)->nonCSSHint;
     ;
     break;}
 case 64:
-#line 581 "parser.y"
+#line 585 "parser.y"
 {
 	yyval.selector = yyvsp[-1].selector;
         CSSSelector *end = yyvsp[-1].selector;
@@ -1459,14 +1463,14 @@ case 64:
     ;
     break;}
 case 65:
-#line 589 "parser.y"
+#line 593 "parser.y"
 {
         delete yyvsp[-1].selector;
         yyval.selector = 0;
     ;
     break;}
 case 66:
-#line 596 "parser.y"
+#line 600 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->match = CSSSelector::Id;
@@ -1475,7 +1479,7 @@ case 66:
     ;
     break;}
 case 70:
-#line 608 "parser.y"
+#line 612 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->match = CSSSelector::List;
@@ -1484,7 +1488,7 @@ case 70:
     ;
     break;}
 case 71:
-#line 617 "parser.y"
+#line 621 "parser.y"
 {
 	CSSParser *p = static_cast<CSSParser *>(parser);
 	DOM::DocumentImpl *doc = p->document();
@@ -1508,7 +1512,7 @@ case 71:
     ;
     break;}
 case 72:
-#line 641 "parser.y"
+#line 645 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->attr = yyvsp[-1].attribute;
@@ -1516,7 +1520,7 @@ case 72:
     ;
     break;}
 case 73:
-#line 646 "parser.y"
+#line 650 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->attr = yyvsp[-5].attribute;
@@ -1525,43 +1529,43 @@ case 73:
     ;
     break;}
 case 74:
-#line 655 "parser.y"
+#line 659 "parser.y"
 {
 	yyval.val = CSSSelector::Exact;
     ;
     break;}
 case 75:
-#line 658 "parser.y"
+#line 662 "parser.y"
 {
 	yyval.val = CSSSelector::List;
     ;
     break;}
 case 76:
-#line 661 "parser.y"
+#line 665 "parser.y"
 {
 	yyval.val = CSSSelector::Hyphen;
     ;
     break;}
 case 77:
-#line 664 "parser.y"
+#line 668 "parser.y"
 {
 	yyval.val = CSSSelector::Begin;
     ;
     break;}
 case 78:
-#line 667 "parser.y"
+#line 671 "parser.y"
 {
 	yyval.val = CSSSelector::End;
     ;
     break;}
 case 79:
-#line 670 "parser.y"
+#line 674 "parser.y"
 {
 	yyval.val = CSSSelector::Contain;
     ;
     break;}
 case 82:
-#line 681 "parser.y"
+#line 685 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->match = CSSSelector::Pseudo;
@@ -1569,7 +1573,7 @@ case 82:
     ;
     break;}
 case 83:
-#line 686 "parser.y"
+#line 690 "parser.y"
 {
 	yyval.selector = new CSSSelector();
 	yyval.selector->match = CSSSelector::Pseudo;
@@ -1578,13 +1582,13 @@ case 83:
     ;
     break;}
 case 84:
-#line 695 "parser.y"
+#line 699 "parser.y"
 {
 	yyval.ok = yyvsp[0].ok;
     ;
     break;}
 case 85:
-#line 698 "parser.y"
+#line 702 "parser.y"
 {
 	yyval.ok = yyvsp[-1].ok;
 	if ( yyvsp[0].ok )
@@ -1592,13 +1596,13 @@ case 85:
     ;
     break;}
 case 86:
-#line 703 "parser.y"
+#line 707 "parser.y"
 {
 	yyval.ok = yyvsp[0].ok;
     ;
     break;}
 case 87:
-#line 706 "parser.y"
+#line 710 "parser.y"
 {
 	yyval.ok = false;
 #ifdef CSS_DEBUG
@@ -1607,7 +1611,7 @@ case 87:
     ;
     break;}
 case 88:
-#line 712 "parser.y"
+#line 716 "parser.y"
 {
 	yyval.ok = false;
 #ifdef CSS_DEBUG
@@ -1616,13 +1620,13 @@ case 88:
     ;
     break;}
 case 89:
-#line 721 "parser.y"
+#line 725 "parser.y"
 {
 	yyval.ok = yyvsp[-2].ok;
     ;
     break;}
 case 90:
-#line 724 "parser.y"
+#line 728 "parser.y"
 {
 	yyval.ok = false;
 #ifdef CSS_DEBUG
@@ -1631,7 +1635,7 @@ case 90:
     ;
     break;}
 case 91:
-#line 730 "parser.y"
+#line 734 "parser.y"
 {
 	yyval.ok = false;
 #ifdef CSS_DEBUG
@@ -1640,7 +1644,7 @@ case 91:
     ;
     break;}
 case 92:
-#line 736 "parser.y"
+#line 740 "parser.y"
 {
 	yyval.ok = yyvsp[-3].ok;
 	if ( yyvsp[-2].ok )
@@ -1648,7 +1652,7 @@ case 92:
     ;
     break;}
 case 93:
-#line 741 "parser.y"
+#line 745 "parser.y"
 {
 	yyval.ok = yyvsp[-3].ok;
 #ifdef CSS_DEBUG
@@ -1657,7 +1661,7 @@ case 93:
     ;
     break;}
 case 94:
-#line 747 "parser.y"
+#line 751 "parser.y"
 {
 	yyval.ok = yyvsp[-5].ok;
 #ifdef CSS_DEBUG
@@ -1666,7 +1670,7 @@ case 94:
     ;
     break;}
 case 95:
-#line 756 "parser.y"
+#line 760 "parser.y"
 {
 	yyval.ok = false;
 	CSSParser *p = static_cast<CSSParser *>(parser);
@@ -1691,29 +1695,29 @@ case 95:
     ;
     break;}
 case 96:
-#line 781 "parser.y"
+#line 785 "parser.y"
 {
 	QString str = qString(yyvsp[-1].string);
 	yyval.prop_id = getPropertyID( str.lower().latin1(), str.length() );
     ;
     break;}
 case 97:
-#line 788 "parser.y"
+#line 792 "parser.y"
 { yyval.b = true; ;
     break;}
 case 98:
-#line 789 "parser.y"
+#line 793 "parser.y"
 { yyval.b = false; ;
     break;}
 case 99:
-#line 793 "parser.y"
+#line 797 "parser.y"
 {
 	yyval.valueList = new ValueList;
 	yyval.valueList->addValue( yyvsp[0].value );
     ;
     break;}
 case 100:
-#line 797 "parser.y"
+#line 801 "parser.y"
 {
         yyval.valueList = yyvsp[-2].valueList;
 	if ( yyval.valueList ) {
@@ -1729,44 +1733,44 @@ case 100:
     ;
     break;}
 case 101:
-#line 810 "parser.y"
+#line 814 "parser.y"
 {
         delete yyvsp[-1].valueList;
         yyval.valueList = 0;
     ;
     break;}
 case 102:
-#line 817 "parser.y"
+#line 821 "parser.y"
 {
 	yyval.tok = '/';
     ;
     break;}
 case 103:
-#line 820 "parser.y"
+#line 824 "parser.y"
 {
 	yyval.tok = ',';
     ;
     break;}
 case 104:
-#line 823 "parser.y"
+#line 827 "parser.y"
 {
         yyval.tok = 0;
   ;
     break;}
 case 105:
-#line 829 "parser.y"
+#line 833 "parser.y"
 { yyval.value = yyvsp[0].value; ;
     break;}
 case 106:
-#line 830 "parser.y"
+#line 834 "parser.y"
 { yyval.value = yyvsp[0].value; yyval.value.fValue *= yyvsp[-1].val; ;
     break;}
 case 107:
-#line 831 "parser.y"
+#line 835 "parser.y"
 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_STRING; ;
     break;}
 case 108:
-#line 832 "parser.y"
+#line 836 "parser.y"
 {
       QString str = qString( yyvsp[-1].string );
       yyval.value.id = getValueID( str.lower().latin1(), str.length() );
@@ -1775,101 +1779,101 @@ case 108:
   ;
     break;}
 case 109:
-#line 838 "parser.y"
+#line 842 "parser.y"
 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_URI; ;
     break;}
 case 110:
-#line 839 "parser.y"
+#line 843 "parser.y"
 { yyval.value.id = 0; yyval.value.iValue = 0; yyval.value.unit = CSSPrimitiveValue::CSS_UNKNOWN;/* ### */ ;
     break;}
 case 111:
-#line 840 "parser.y"
+#line 844 "parser.y"
 { yyval.value.id = 0; yyval.value.string = yyvsp[0].string; yyval.value.unit = CSSPrimitiveValue::CSS_RGBCOLOR; ;
     break;}
 case 112:
-#line 842 "parser.y"
+#line 846 "parser.y"
 {
       yyval.value = yyvsp[0].value;
   ;
     break;}
 case 113:
-#line 848 "parser.y"
+#line 852 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_NUMBER; ;
     break;}
 case 114:
-#line 849 "parser.y"
+#line 853 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PERCENTAGE; ;
     break;}
 case 115:
-#line 850 "parser.y"
+#line 854 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PX; ;
     break;}
 case 116:
-#line 851 "parser.y"
+#line 855 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_CM; ;
     break;}
 case 117:
-#line 852 "parser.y"
+#line 856 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_MM; ;
     break;}
 case 118:
-#line 853 "parser.y"
+#line 857 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_IN; ;
     break;}
 case 119:
-#line 854 "parser.y"
+#line 858 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PT; ;
     break;}
 case 120:
-#line 855 "parser.y"
+#line 859 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_PC; ;
     break;}
 case 121:
-#line 856 "parser.y"
+#line 860 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_DEG; ;
     break;}
 case 122:
-#line 857 "parser.y"
+#line 861 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_RAD; ;
     break;}
 case 123:
-#line 858 "parser.y"
+#line 862 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_GRAD; ;
     break;}
 case 124:
-#line 859 "parser.y"
+#line 863 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_MS; ;
     break;}
 case 125:
-#line 860 "parser.y"
+#line 864 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_S; ;
     break;}
 case 126:
-#line 861 "parser.y"
+#line 865 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_HZ; ;
     break;}
 case 127:
-#line 862 "parser.y"
+#line 866 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_KHZ; ;
     break;}
 case 128:
-#line 863 "parser.y"
+#line 867 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_EMS; ;
     break;}
 case 129:
-#line 864 "parser.y"
+#line 868 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = Value::Q_EMS; ;
     break;}
 case 130:
-#line 865 "parser.y"
+#line 869 "parser.y"
 { yyval.value.id = 0; yyval.value.fValue = yyvsp[-1].val; yyval.value.unit = CSSPrimitiveValue::CSS_EXS; ;
     break;}
 case 131:
-#line 866 "parser.y"
+#line 870 "parser.y"
 { yyval.value.id = 0; yyval.value.string = yyvsp[-1].string; yyval.value.unit = CSSPrimitiveValue::CSS_DIMENSION ;
     break;}
 case 132:
-#line 871 "parser.y"
+#line 875 "parser.y"
 {
       Function *f = new Function;
       f->name = yyvsp[-4].string;
@@ -1880,11 +1884,11 @@ case 132:
   ;
     break;}
 case 133:
-#line 886 "parser.y"
+#line 890 "parser.y"
 { yyval.string = yyvsp[-1].string; ;
     break;}
 case 134:
-#line 893 "parser.y"
+#line 897 "parser.y"
 {
 	yyval.rule = 0;
 #ifdef CSS_DEBUG
@@ -1893,7 +1897,7 @@ case 134:
     ;
     break;}
 case 135:
-#line 899 "parser.y"
+#line 903 "parser.y"
 {
 	yyval.rule = 0;
 #ifdef CSS_DEBUG
@@ -1902,7 +1906,7 @@ case 135:
     ;
     break;}
 case 136:
-#line 908 "parser.y"
+#line 912 "parser.y"
 {
 	yyval.rule = 0;
 #ifdef CSS_DEBUG
@@ -2132,6 +2136,6 @@ yyerrhandle:
     }
   return 1;
 }
-#line 943 "parser.y"
+#line 947 "parser.y"
 
 
diff --git a/WebCore/khtml/css/parser.y b/WebCore/khtml/css/parser.y
index b207ff5..924be59 100644
--- a/WebCore/khtml/css/parser.y
+++ b/WebCore/khtml/css/parser.y
@@ -511,17 +511,21 @@ selector:
     }
     | selector combinator simple_selector {
     	$$ = $3;
-        CSSSelector *end = $3;
-        while( end->tagHistory )
-            end = end->tagHistory;
-	end->relation = $2;
-	end->tagHistory = $1;
-        if ( $2 == CSSSelector::Descendant ||
-             $2 == CSSSelector::Child ) {
-            CSSParser *p = static_cast<CSSParser *>(parser);
-DOM::DocumentImpl *doc = p->document();
-            if ( doc )
-                doc->setUsesDescendantRules(true);
+        if ($$) {
+            CSSSelector *end = $$;
+            while( end->tagHistory )
+                end = end->tagHistory;
+            end->relation = $2;
+            end->tagHistory = $1;
+            if ( $2 == CSSSelector::Descendant ||
+                $2 == CSSSelector::Child ) {
+                CSSParser *p = static_cast<CSSParser *>(parser);
+                DOM::DocumentImpl *doc = p->document();
+                if ( doc )
+                    doc->setUsesDescendantRules(true);
+            }
+        } else {
+            delete $1;
         }
     }
     | selector error {
diff --git a/WebCore/khtml/khtml_part.cpp b/WebCore/khtml/khtml_part.cpp
index baaa977..623748e 100644
--- a/WebCore/khtml/khtml_part.cpp
+++ b/WebCore/khtml/khtml_part.cpp
@@ -1951,11 +1951,14 @@ bool KHTMLPart::gotoAnchor( const QString &name )
   if (!d->m_doc)
     return false;
 
-  HTMLCollectionImpl *anchors =
-      new HTMLCollectionImpl( d->m_doc, HTMLCollectionImpl::DOC_ANCHORS);
-  anchors->ref();
-  NodeImpl *n = anchors->namedItem(name, !d->m_doc->inQuirksMode());
-  anchors->deref();
+  NodeImpl *n = d->m_doc->getElementById(name);
+  if (!n) {
+    HTMLCollectionImpl *anchors =
+        new HTMLCollectionImpl( d->m_doc, HTMLCollectionImpl::DOC_ANCHORS);
+    anchors->ref();
+    n = anchors->namedItem(name, !d->m_doc->inQuirksMode());
+    anchors->deref();
+  }
 
   d->m_doc->setCSSTarget(n); // Setting to null will clear the current target.
   

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list