From 0017ad983a460e60ac4000c7b48f17d02e2a8243 Mon Sep 17 00:00:00 2001 From: Florian Liekweg Date: Fri, 26 Nov 2004 15:58:30 +0000 Subject: [PATCH] don't free inside obstacks (thx, michael) [r4478] --- ir/ana2/qset.c | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/ir/ana2/qset.c b/ir/ana2/qset.c index 8813512ae..bae5e3253 100644 --- a/ir/ana2/qset.c +++ b/ir/ana2/qset.c @@ -1,7 +1,7 @@ /* -*- c -*- */ /* - * Time-stamp: <23.11.2004 13:26:21h liekweg> + * Time-stamp: <26.11.2004 16:53:35h liekweg> * Project: libFIRM * File name: ir/ana2/qset.c * Purpose: yet another set implementation @@ -344,7 +344,10 @@ static void qset_resize (qset_t *qset, const int n_slots) memcpy (values, qset->values, qset->n_elems * sizeof (sortable_t)); memset (qset->values, 0x00, qset->n_elems * sizeof (sortable_t)); /* debug only */ - free (qset->values); + + if (NULL == qset->obst) { + free (qset->values); + } qset->values = values; qset->n_slots = new_size; @@ -509,15 +512,18 @@ void qset_sort (qset_t *qset) */ void qset_compact (qset_t *qset) { - sortable_t *values = (sortable_t*) mix_malloc (qset->obst, - qset->n_elems * sizeof (sortable_t)); - memcpy (values, qset->values, qset->n_elems * sizeof (sortable_t)); + if (NULL == qset->obst) { + sortable_t *values = (sortable_t*) mix_malloc (qset->obst, + qset->n_elems * sizeof (sortable_t)); + memcpy (values, qset->values, qset->n_elems * sizeof (sortable_t)); - memset (qset->values, 0x00, qset->n_elems * sizeof (sortable_t)); - free (qset->values); + memset (qset->values, 0x00, qset->n_elems * sizeof (sortable_t)); - qset->values = values; - qset->n_slots = qset->n_elems; + free (qset->values); + + qset->values = values; + qset->n_slots = qset->n_elems; + } } /* @@ -620,7 +626,10 @@ void qset_insert_all (qset_t *qset1, qset_t *qset2) qset_sort (qset1); memset (values, 0x00, n_elems * sizeof (sortable_t)); - free (values); + + if (NULL == qset1->obst) { + free (values); + } } /* @@ -749,6 +758,9 @@ int qset_test_main (int argc, char **argv) /* $Log$ + Revision 1.6 2004/11/26 15:58:30 liekweg + don't free inside obstacks (thx, michael) + Revision 1.5 2004/11/24 14:53:56 liekweg Bugfixes -- 2.20.1