[augeas-devel] [PATCH 10/16] Remember the jmt in the lens and free it when it is no loner needed
lutter at redhat.com
lutter at redhat.com
Wed Dec 23 21:30:59 UTC 2009
From: David Lutterkort <lutter at redhat.com>
---
src/lens.c | 8 ++++++++
src/lens.h | 2 ++
2 files changed, 10 insertions(+), 0 deletions(-)
diff --git a/src/lens.c b/src/lens.c
index 37566e8..600ec67 100644
--- a/src/lens.c
+++ b/src/lens.c
@@ -736,6 +736,7 @@ void free_lens(struct lens *lens) {
case L_REC:
if (!lens->rec_internal) {
unref(lens->body, lens);
+ jmt_free(lens->jmt);
}
break;
default:
@@ -768,6 +769,11 @@ void lens_release(struct lens *lens) {
lens_release(lens->children[i]);
}
}
+
+ if (lens->tag == L_REC) {
+ jmt_free(lens->jmt);
+ lens->jmt = NULL;
+ }
}
/*
@@ -1942,6 +1948,8 @@ struct value *lns_check_rec(struct info *info,
top->body = ref(body);
top->alias = rec;
rec->alias = top;
+
+ top->jmt = jmt_build(rec);
ERR_BAIL(info);
return result;
diff --git a/src/lens.h b/src/lens.h
index 8d2cf3f..e5a59bd 100644
--- a/src/lens.h
+++ b/src/lens.h
@@ -25,6 +25,7 @@
#include "syntax.h"
#include "fa.h"
+#include "jmt.h"
enum lens_tag {
L_DEL = 42, /* Shift tag values so we fail fast(er) on bad pointers */
@@ -102,6 +103,7 @@ struct lens {
* set up in lns_check_rec, and not reference counted.
*/
struct lens *alias;
+ struct jmt *jmt;
};
};
};
--
1.6.5.2
More information about the augeas-devel
mailing list