[augeas-devel] augeas: master - * src/pathx.c (release_value): factor logic into separate function
David Lutterkort
lutter at fedoraproject.org
Tue Mar 24 23:07:36 UTC 2009
Gitweb: http://git.fedorahosted.org/git/augeas.git?p=augeas.git;a=commitdiff;h=b0b844226fe62a0aa54f2084c3e0741246ec43f3
Commit: b0b844226fe62a0aa54f2084c3e0741246ec43f3
Parent: 48af788f8e69d9e0b15abcf8683e9eece2f6dbfc
Author: David Lutterkort <lutter at redhat.com>
AuthorDate: Fri Mar 20 17:05:11 2009 -0700
Committer: David Lutterkort <lutter at redhat.com>
CommitterDate: Sat Mar 21 20:41:27 2009 -0700
* src/pathx.c (release_value): factor logic into separate function
---
src/pathx.c | 38 ++++++++++++++++++++++----------------
1 files changed, 22 insertions(+), 16 deletions(-)
diff --git a/src/pathx.c b/src/pathx.c
index d635f2d..ce08a7a 100644
--- a/src/pathx.c
+++ b/src/pathx.c
@@ -351,6 +351,26 @@ static void free_nodeset(struct nodeset *ns) {
}
}
+/* Free all objects used by VALUE, but not VALUE itself */
+static void release_value(struct value *v) {
+ if (v == NULL)
+ return;
+
+ switch (v->tag) {
+ case T_NODESET:
+ free_nodeset(v->nodeset);
+ break;
+ case T_STRING:
+ free(v->string);
+ break;
+ case T_BOOLEAN:
+ case T_NUMBER:
+ break;
+ default:
+ assert(0);
+ }
+}
+
static void free_state(struct state *state) {
if (state == NULL)
return;
@@ -359,22 +379,8 @@ static void free_state(struct state *state) {
free_expr(state->exprs[i]);
free(state->exprs);
- for(int i=0; i < state->value_pool_used; i++) {
- struct value *v = state->value_pool + i;
- switch (v->tag) {
- case T_NODESET:
- free_nodeset(v->nodeset);
- break;
- case T_STRING:
- free(v->string);
- break;
- case T_BOOLEAN:
- case T_NUMBER:
- break;
- default:
- assert(0);
- }
- }
+ for(int i=0; i < state->value_pool_used; i++)
+ release_value(state->value_pool + i);
free(state->value_pool);
free(state->values);
free(state);
More information about the augeas-devel
mailing list