blob: ca7e6f512d814338bd4a776432919c54b3b8a394 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
/* Copyrights 2002 Luis Figueiredo (stdio@netc.pt) All rights reserved.
*
* See the LICENSE file
*
* The origin of this software must not be misrepresented, either by
* explicit claim or by omission. Since few users ever read sources,
* credits must appear in the documentation.
*
* date: Sat Mar 30 14:25:25 GMT 2002
*
* -- memory functions
*/
#include "memory.h"
struct memrequest {
char *ptr;
struct memrequest *next;
};
/*
* Add a buffer to memrequest list
*/
void *__ILWS_add_buffer(struct memrequest *list,unsigned int size) {
struct memrequest *tmem;
if(size==0) {
return NULL;
};
if(list!=NULL) {
tmem=list;
}else {
return NULL;
};
while(tmem->next!=NULL)tmem=tmem->next;
tmem->next=__ILWS_malloc(sizeof(struct memrequest));
if(tmem->next==NULL) return NULL; // ERROR
tmem->next->ptr=__ILWS_malloc(size);
tmem->next->next=NULL;
return tmem->next->ptr;
}
/*
* Initialize memrequest list of buffers
*/
struct memrequest *__ILWS_init_buffer_list() {
struct memrequest *newlist;
newlist=__ILWS_malloc(sizeof(struct memrequest));
if(newlist==NULL)
return NULL;
newlist->next=NULL;
newlist->ptr=NULL;
return newlist;
}
/*
* Delete memrequest buffer node (free)
*/
void __ILWS_delete_buffer(struct memrequest *mem) {
__ILWS_free(mem->ptr);
__ILWS_free(mem);
}
/*
* Delete memrequest next buffer
*/
void __ILWS_delete_next_buffer(struct memrequest *mem) {
struct memrequest *tmem;
tmem=mem->next;
mem->next=mem->next->next;
__ILWS_delete_buffer(tmem);
}
/*
* Delete whole memrequest buffer list
*/
void __ILWS_delete_buffer_list(struct memrequest *list) {
struct memrequest *tmem=list;
if (tmem==NULL)
return;
while(tmem->next!=NULL) {
__ILWS_delete_next_buffer(tmem);
};
__ILWS_delete_buffer(tmem);
}
|