diff options
author | Jorge Arellano Cid <jcid@dillo.org> | 2009-02-15 16:07:50 -0300 |
---|---|---|
committer | Jorge Arellano Cid <jcid@dillo.org> | 2009-02-15 16:07:50 -0300 |
commit | 7dbd5c7b84077416bd3cfad412f3565b707286c4 (patch) | |
tree | 99fce5422871319b0a612e00775c6f6e7da770f4 /src | |
parent | 14f136096ca28cba15da7521c798e27327f357d7 (diff) | |
parent | 9482adc1213108c6df6807ed18c9fd7850aacaa5 (diff) |
merge
Diffstat (limited to 'src')
-rw-r--r-- | src/css.cc | 6 | ||||
-rw-r--r-- | src/styleengine.cc | 8 |
2 files changed, 11 insertions, 3 deletions
@@ -310,8 +310,12 @@ void CssStyleSheet::addRule (CssRule *rule) { ruleList = anyTable; } - if (ruleList) + if (ruleList) { ruleList->insert (rule); + } else { + assert (top->element == CssSimpleSelector::ELEMENT_NONE); + delete rule; + } } void CssStyleSheet::apply (CssPropertyList *props, diff --git a/src/styleengine.cc b/src/styleengine.cc index 81054a06..28effb92 100644 --- a/src/styleengine.cc +++ b/src/styleengine.cc @@ -43,13 +43,17 @@ StyleEngine::StyleEngine (dw::core::Layout *layout) { n->num = num++; n->style = Style::create (layout, &style_attrs); n->wordStyle = NULL; + n->element = 0; + n->id = NULL; + n->klass = NULL; n->pseudo = NULL; n->styleAttribute = NULL; n->inheritBackgroundColor = false; } StyleEngine::~StyleEngine () { - /* \todo clear stack if not empty */ + while (stack->size () > 0) + endElement (stack->getRef (stack->size () - 1)->element); delete stack; delete cssContext; } @@ -136,7 +140,7 @@ void StyleEngine::setPseudoVisited () { */ void StyleEngine::endElement (int element) { // fprintf(stderr, "===> END %d\n", element); - assert (stack->size () > 1); + assert (stack->size () > 0); assert (element == stack->getRef (stack->size () - 1)->element); Node *n = stack->getRef (stack->size () - 1); |