[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