[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