summaryrefslogtreecommitdiff
path: root/src/styleengine.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/styleengine.cc')
-rw-r--r--src/styleengine.cc11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/styleengine.cc b/src/styleengine.cc
index 4839931c..54d6a8f5 100644
--- a/src/styleengine.cc
+++ b/src/styleengine.cc
@@ -100,7 +100,9 @@ void StyleEngine::setId (const char *id) {
void StyleEngine::setClass (const char *klass) {
Node *n = stack->getRef (stack->size () - 1);
assert (n->klass == NULL);
- n->klass = dStrdup (klass);
+ n->klass = new lout::misc::SimpleVector<char*>(1);
+ n->klass->increase ();
+ n->klass->set (0, dStrdup (klass));
};
void StyleEngine::setStyle (const char *style) {
@@ -161,8 +163,11 @@ void StyleEngine::endElement (int element) {
n->wordStyle->unref ();
if (n->id)
dFree ((void*) n->id);
- if (n->klass)
- dFree ((void*) n->klass);
+ if (n->klass) {
+ for (int i = 0; i < n->klass->size (); i++)
+ dFree (n->klass->get(i));
+ delete n->klass;
+ }
if (n->styleAttribute)
dFree ((void*) n->styleAttribute);