summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/skin_parser/skin_buffer.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/lib/skin_parser/skin_buffer.c b/lib/skin_parser/skin_buffer.c
index 0045b3c4c7..3c0870ea5a 100644
--- a/lib/skin_parser/skin_buffer.c
+++ b/lib/skin_parser/skin_buffer.c
@@ -66,11 +66,12 @@ struct malloc_object {
66 void* object; 66 void* object;
67 struct malloc_object *next; 67 struct malloc_object *next;
68}; 68};
69static struct malloc_object *first = NULL, *last = NULL; 69static struct malloc_object *malloced_head = NULL, *malloced_tail = NULL;
70 70
71static void skin_free_malloced(void) 71static void skin_free_malloced(void)
72{ 72{
73 struct malloc_object *obj = first, *this; 73 struct malloc_object *obj = malloced_head;
74 struct malloc_object *this;
74 while (obj) 75 while (obj)
75 { 76 {
76 this = obj; 77 this = obj;
@@ -78,8 +79,8 @@ static void skin_free_malloced(void)
78 free(this->object); 79 free(this->object);
79 free(this); 80 free(this);
80 } 81 }
81 first = NULL; 82 malloced_head = NULL;
82 last = NULL; 83 malloced_tail = NULL;
83} 84}
84 85
85#endif 86#endif
@@ -91,7 +92,7 @@ void skin_buffer_init(char* buffer, size_t size)
91 buf_size = size; 92 buf_size = size;
92#elif defined(USE_HOST_MALLOC) 93#elif defined(USE_HOST_MALLOC)
93 (void)buffer; (void)size; 94 (void)buffer; (void)size;
94 skin_free_malloced(); 95 skin_free_malloced();
95#endif 96#endif
96} 97}
97 98
@@ -112,11 +113,11 @@ void* skin_buffer_alloc(size_t size)
112 return NULL; 113 return NULL;
113 obj->object = malloc(size); 114 obj->object = malloc(size);
114 obj->next = NULL; 115 obj->next = NULL;
115 if (last == NULL) 116 if (malloced_tail == NULL)
116 first = last = obj; 117 malloced_head = malloced_tail = obj;
117 else 118 else
118 last->next = obj; 119 malloced_tail->next = obj;
119 last = obj; 120 malloced_tail = obj;
120 retval = obj->object; 121 retval = obj->object;
121#else 122#else
122 retval = malloc(size); 123 retval = malloc(size);