aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJorge Arellano Cid <jcid@dillo.org>2009-02-15 16:07:50 -0300
committerJorge Arellano Cid <jcid@dillo.org>2009-02-15 16:07:50 -0300
commit7dbd5c7b84077416bd3cfad412f3565b707286c4 (patch)
tree99fce5422871319b0a612e00775c6f6e7da770f4 /src
parent14f136096ca28cba15da7521c798e27327f357d7 (diff)
parent9482adc1213108c6df6807ed18c9fd7850aacaa5 (diff)
merge
Diffstat (limited to 'src')
-rw-r--r--src/css.cc6
-rw-r--r--src/styleengine.cc8
2 files changed, 11 insertions, 3 deletions
diff --git a/src/css.cc b/src/css.cc
index c60b0365..3a2938e2 100644
--- a/src/css.cc
+++ b/src/css.cc
@@ -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);