diff options
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); |