@@ -26,6 +26,7 @@ void queue_init_data(struct queue* qu, size_t capacity)
26
26
qu -> data = new_data ;
27
27
qu -> capacity = capacity ;
28
28
qu -> free_capacity = capacity - qu -> size ;
29
+ qu -> head = qu -> data + qu -> size ;
29
30
}
30
31
31
32
void queue_expand_capacity (struct queue * qu , size_t size )
@@ -34,11 +35,11 @@ void queue_expand_capacity(struct queue* qu, size_t size)
34
35
if (size == 0 )
35
36
return ;
36
37
37
- if (qu -> size + size < qu -> free_capacity )
38
+ if (qu -> size + size < ( qu -> free_capacity * QUEUE_FREE_CAP_BUFFER ) )
38
39
return ;
39
40
40
41
size_t new_cap = qu -> capacity * 2 , new_free_cap = new_cap - qu -> size ;
41
- while (qu -> size + size >= new_free_cap ) {
42
+ while (qu -> size + size >= ( new_free_cap * QUEUE_FREE_CAP_BUFFER ) ) {
42
43
new_cap *= 2 ;
43
44
new_free_cap = new_cap - qu -> size ;
44
45
}
@@ -71,8 +72,6 @@ void queue_init(struct queue** qu, size_t capacity)
71
72
(* qu )-> size = 0 ;
72
73
(* qu )-> data = NULL ;
73
74
queue_init_data (* qu , capacity );
74
-
75
- (* qu )-> head = (* qu )-> data ;
76
75
}
77
76
78
77
/**
@@ -116,7 +115,7 @@ void queue_push(struct queue* qu, char* data, size_t size)
116
115
return ;
117
116
}
118
117
119
- if (qu -> size + size >= qu -> free_capacity ) {
118
+ if (qu -> size + size >= ( qu -> free_capacity * QUEUE_FREE_CAP_BUFFER ) ) {
120
119
queue_expand_capacity (qu , size );
121
120
log_info ("queue_push: expanding current capacity to %d\n" , qu -> capacity );
122
121
}
@@ -146,7 +145,7 @@ void queue_push_ex(struct queue* qu, size_t size)
146
145
return ;
147
146
}
148
147
149
- if (qu -> size + size >= qu -> free_capacity ) {
148
+ if (qu -> size + size >= ( qu -> free_capacity * QUEUE_FREE_CAP_BUFFER ) ) {
150
149
queue_expand_capacity (qu , size );
151
150
log_info ("queue_push: expanding current capacity to %d\n" , qu -> capacity );
152
151
}
0 commit comments