From e42ebce918b2b12b57f086d9a42c07611eb27a8f Mon Sep 17 00:00:00 2001
From: hadaq <hadaq>
Date: Wed, 12 May 2004 12:25:26 +0000
Subject: [PATCH] removed memory leak, some cleanup

---
 allParam/rpc/pcache.c | 45 ++++++++++++++++++-------------------------
 allParam/rpc/pcache.h |  4 ++++
 2 files changed, 23 insertions(+), 26 deletions(-)

diff --git a/allParam/rpc/pcache.c b/allParam/rpc/pcache.c
index b684376..8cd0cd0 100644
--- a/allParam/rpc/pcache.c
+++ b/allParam/rpc/pcache.c
@@ -5,18 +5,18 @@
 
 #include "pcache.h"
 
-int PData_invariant(const PData *my) {
+static int PData_invariant(const PData *my) {
 	int retVal;
 
 	retVal = my != NULL
 		&& my->name != NULL
 		&& my->idx != NULL
-		&& (my->type == PInt || my->type == PString || my->type == PIntArray || my->type == PStringArray);
+		&& (my->type == PInt);
 	
 	return retVal;
 }
 
-PData *newPInt(const char *name, const char *idx, unsigned long int value) {
+static PData *newPInt(const char *name, const char *idx, unsigned long int value) {
 	PData *my = malloc(sizeof(PData));
 
 	my->name = malloc(strlen(name)+1);
@@ -32,7 +32,7 @@ PData *newPInt(const char *name, const char *idx, unsigned long int value) {
 	return my;
 }
 
-void delPData(PData *my) {
+static void delPData(PData *my) {
 	if (my != NULL) {
 		switch (my->type) {
 		case PInt:
@@ -44,62 +44,55 @@ void delPData(PData *my) {
 	}
 }
 
-static int keyCompare(const PData *my, const PData *data) {
+static int compare(const PData *my, const char *name, const char *idx) {
 	int retVal;
 
-	assert(PData_invariant(my));
-	assert(PData_invariant(data));
-
-	retVal = strcmp(my->name, data->name);
+	retVal = strcmp(my->idx, idx);
 	if (retVal == 0) {
-		retVal = strcmp(my->idx, data->idx);
+		retVal = strcmp(my->name, name);
 	}
 
 	return retVal < 0 ? -1 : retVal > 0 ? 1 : 0;
 }
 
-PCache *insert(PCache *my, PData *data) {
-	assert(PData_invariant(data));
-
+static PCache *insert(PCache *my, const char *name, const char *idx, unsigned long int value) {
 	if (my == NULL) {
 		my = malloc(sizeof(PCache));
 		my->r = NULL;
 		my->l = NULL;
-		my->data = data;
+		my->data = newPInt(name, idx, value);
 	} else {
-		switch (keyCompare(my->data, data)) {
+		switch (compare(my->data, name, idx)) {
 			case 0:
 				delPData(my->data);
-				my->data = data;
+				my->data = newPInt(name, idx, value);
 				break;
 			case -1:
-				my->l = insert(my->l, data);
+				my->l = insert(my->l, name, idx, value);
 				break;
 			case 1:
-				my->r = insert(my->r, data);
+				my->r = insert(my->r, name, idx, value);
 				break;
 		}
 	}
 	return my;
 }
 
-PData *find(const PCache *my, const PData *data) {
+static PData *find(const PCache *my, const char *name, const char *idx) {
 	PData *retVal;
 
-	assert(PData_invariant(data));
-
 	if (my == NULL) {
 		retVal = NULL;
 	} else {
-		switch (keyCompare(my->data, data)) {
+		switch (compare(my->data, name, idx)) {
 			case 0:
 				retVal = my->data;
 				break;
 			case -1:
-				retVal = find(my->l, data);
+				retVal = find(my->l, name, idx);
 				break;
 			case 1:
-				retVal = find(my->r, data);
+				retVal = find(my->r, name, idx);
 				break;
 		}
 	}
@@ -108,7 +101,7 @@ PData *find(const PCache *my, const PData *data) {
 
 int PCache_storeInt(PCache **my, const char *name, const char *idx, unsigned long int value) {
 
-	*my = insert(*my, newPInt(name, idx, value));			
+	*my = insert(*my, name, idx, value);			
 
 	return 0;
 }
@@ -117,7 +110,7 @@ int PCache_getInt(const PCache *my, const char *name, const char *idx, unsigned
 	int retVal;
 	const PData *data;
 
-	data = find(my, newPInt(name, idx, 0));
+	data = find(my, name, idx);
 	if (data == NULL) {
 		*value = 0;
 		retVal = -1;
diff --git a/allParam/rpc/pcache.h b/allParam/rpc/pcache.h
index 3f87f5b..f977c02 100644
--- a/allParam/rpc/pcache.h
+++ b/allParam/rpc/pcache.h
@@ -1,7 +1,11 @@
 #ifndef PCHE_H
 #define PCHE_H
 
+enum PType { PInt };
+#if 0
 enum PType { PInt, PString, PIntArray, PStringArray };
+#endif
+
 struct PDataS {
 	char *name;
 	char *idx;
-- 
2.43.0