]> git.mxchange.org Git - flightgear.git/blobdiff - utils/xmlgrep/xml_cache.c
Fixed some memory leaks. Thanks to Andreas Gaeb for reporting.
[flightgear.git] / utils / xmlgrep / xml_cache.c
index 08ac771d6b99703f4720d6866962e1bbd57e095a..7de2e83bd014a5dc9b8b3b5828e8aaa1dce9257e 100644 (file)
@@ -117,7 +117,7 @@ __xmlNodeGetFromCache(void **nc, const char *start, size_t *len,
             assert(node);
 
             if ((node->name_len == namelen) &&
-                (!memcmp(node->name, name, namelen)))
+                (!strncasecmp(node->name, name, namelen)))
             {
                  if (pos == num)
                  {
@@ -159,18 +159,21 @@ void
 cacheFree(void *nc)
 {
     struct _xml_node *cache = (struct _xml_node *)nc;
-    struct _xml_node *ptr, **node;
-    size_t i = 0;
 
     assert(nc != 0);
 
-    node = (struct _xml_node **)cache->node;
-    while((i < cache->no_nodes) && (ptr = node[i++]) != 0)
+    if (cache->first_free)
     {
-        cacheFree(ptr);
-    }
+        struct _xml_node **node = (struct _xml_node **)cache->node;
+        size_t i = 0;
+
+        while(i < cache->first_free)
+        {
+            cacheFree(node[i++]);
+        }
 
-    free(node);
+        free(node);
+    }
     free(cache);
 }
 
@@ -231,8 +234,6 @@ void
 cacheDataSet(void *n, char *name, size_t namelen, char *data, size_t datalen)
 {
    struct _xml_node *node = (struct _xml_node *)n;
-   size_t len = datalen;
-   char *ptr = data;
 
    assert(node != 0);
    assert(name != 0);