fix segfault
[apps/madmutt.git] / lib / list.c
index 1dd865f..efa4c98 100644 (file)
 #include <stddef.h>
 #include <string.h>
 
+#include <lib-lib/mem.h>
+
 #include "list.h"
 
 #include "mem.h"
 #include "str.h"
 
 list2_t* list_new (void) {
-  return (mem_calloc (1, sizeof (list2_t)));
+  return p_new(list2_t, 1);
 }
 
 void list_del (list2_t** l, list_del_t* del) {
@@ -26,8 +28,8 @@ void list_del (list2_t** l, list_del_t* del) {
   if (del)
     for (i = 0; i < (*l)->length; i++)
       del (&(*l)->data[i]);
-  mem_free(&(*l)->data);
-  mem_free(l);
+  p_delete(&(*l)->data);
+  p_delete(l);
 }
 
 void list_push_back (list2_t** l, void* p) {
@@ -77,15 +79,14 @@ void* list_pop_idx (list2_t* l, int c) {
   return (p);
 }
 
-list2_t* list_cpy (list2_t* l) {
-  list2_t* ret = NULL;
-  if (list_empty(l))
-    return (NULL);
-  ret = list_new ();
-  ret->length = l->length;
-  ret->data = mem_malloc (l->length*sizeof(void*));
-  memcpy (ret->data, l->data, l->length*sizeof(void*));
-  return (ret);
+list2_t *list_cpy(list2_t *l) {
+    list2_t* ret = NULL;
+    if (list_empty(l))
+        return NULL;
+    ret = list_new();
+    ret->length = l->length;
+    ret->data = p_dup(l->data, l->length);
+    return ret;
 }
 
 list2_t* list_dup (list2_t* l, void* (*dup) (void*)) {
@@ -95,7 +96,7 @@ list2_t* list_dup (list2_t* l, void* (*dup) (void*)) {
     return (NULL);
   ret = list_new ();
   ret->length = l->length;
-  ret->data = mem_malloc (l->length*sizeof(void*));
+  ret->data = p_new(void*, l->length);
   for (i = 0; i < l->length; i++)
     ret->data[i] = dup (l->data[i]);
   return (ret);
@@ -122,7 +123,7 @@ list2_t* list_from_str (const char* str, const char* delim) {
   for (p = strtok (tmp, delim); p; p = strtok (NULL, delim)) {
     list_push_back (&ret, str_dup (p));
   }
-  mem_free (&tmp);
+  p_delete(&tmp);
   return (ret);
 }