28
28
#ifndef VSTRING_H_
29
29
#define VSTRING_H_
30
30
31
+ #include <assert.h>
31
32
#include <stdbool.h>
32
33
#include <stdint.h>
33
34
#include <stdlib.h>
34
35
#include <string.h>
36
+ #include <errno.h>
35
37
#include <math.h>
36
38
37
39
#ifndef vstring_inline
@@ -92,24 +94,22 @@ vs_init(vstring *vs, vstring_malloc *vm, enum vstring_type type, char *buf,
92
94
memset (vs , 0 , sizeof (* vs ));
93
95
} else {
94
96
vs = calloc (1 , sizeof (* vs ));
97
+ if (vs == NULL ) {
98
+ return NULL ;
99
+ }
95
100
}
96
101
vs -> flags |= VS_NEEDSFREE ;
97
102
} else {
98
103
memset (vs , 0 , sizeof (* vs ));
99
104
}
100
105
101
- if (vs == NULL ) {
102
- return NULL ;
103
- }
104
-
105
106
if (buf != NULL && size > 0 ) {
106
107
vs -> contents = buf ;
107
108
vs -> size = size ;
108
109
}
109
110
} else if ((type & VS_TYPE_STATIC ) || (type & VS_TYPE_GROWABLE )) {
110
- if (buf == NULL || size == 0 ) {
111
- return NULL ;
112
- }
111
+ assert (buf != NULL );
112
+ assert (size > 0 );
113
113
114
114
if (vs == NULL ) {
115
115
if (vm != NULL ) {
@@ -120,6 +120,9 @@ vs_init(vstring *vs, vstring_malloc *vm, enum vstring_type type, char *buf,
120
120
memset (vs , 0 , sizeof (* vs ));
121
121
} else {
122
122
vs = calloc (1 , sizeof (* vs ));
123
+ if (vs == NULL ) {
124
+ return NULL ;
125
+ }
123
126
}
124
127
vs -> flags |= VS_NEEDSFREE ;
125
128
} else {
@@ -190,6 +193,9 @@ vs_resize(vstring *vs, size_t hint)
190
193
} else {
191
194
vs -> contents = calloc (1 , vs -> size );
192
195
}
196
+ if (vs -> contents == NULL ) {
197
+ return NULL ;
198
+ }
193
199
} else {
194
200
size_t size = vs -> size * 2 ;
195
201
if (size < hint ) {
@@ -205,6 +211,9 @@ vs_resize(vstring *vs, size_t hint)
205
211
} else {
206
212
tmp = calloc (1 , size );
207
213
}
214
+ if (tmp == NULL ) {
215
+ return NULL ;
216
+ }
208
217
209
218
memcpy (tmp , vs -> contents , vs -> size );
210
219
vs -> contents = tmp ;
@@ -215,12 +224,12 @@ vs_resize(vstring *vs, size_t hint)
215
224
} else {
216
225
tmp = realloc (vs -> contents , size );
217
226
}
218
- if (tmp != NULL ) {
219
- vs -> contents = tmp ;
220
- vs -> size = size ;
221
- } else {
227
+ if (tmp == NULL ) {
222
228
return NULL ;
223
229
}
230
+
231
+ vs -> contents = tmp ;
232
+ vs -> size = size ;
224
233
} else if ((vs -> type & VS_TYPE_STATIC )) {
225
234
/*
226
235
* VS_TYPE_STATIC strings that do not also have
@@ -251,8 +260,9 @@ vs_push(vstring *vs, char c)
251
260
static vstring_inline bool
252
261
vs_pushstr (vstring * vs , const char * s , uint64_t len )
253
262
{
263
+ assert (s != NULL );
254
264
255
- if (s == NULL || len == 0 ) {
265
+ if (len == 0 ) {
256
266
return false;
257
267
}
258
268
0 commit comments