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
|
* We don't use OFString in this file for performance reasons!
*
* We already have a clue about how big the resulting string will get, so we
* can prealloc and only resize when really necessary - OFString would always
* resize when we append, which would be slow here.
*/
inline BOOL
xmlfactory_resize(char **str, size_t *len, size_t add)
{
char *str2;
size_t len2;
len2 = *len + add;
if ((str2 = realloc(*str, len2)) == NULL) {
if (*str)
free(*str);
*str = NULL;
return NO;
}
*str = str2;
*len = len2;
return YES;
}
inline BOOL
xmlfactory_add2str(char **str, size_t *len, size_t *pos, const char *add)
{
size_t add_len;
add_len = strlen(add);
if (!xmlfactory_resize(str, len, add_len))
|
|
|
|
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
|
* We don't use OFString in this file for performance reasons!
*
* We already have a clue about how big the resulting string will get, so we
* can prealloc and only resize when really necessary - OFString would always
* resize when we append, which would be slow here.
*/
static inline BOOL
xmlfactory_resize(char **str, size_t *len, size_t add)
{
char *str2;
size_t len2;
len2 = *len + add;
if ((str2 = realloc(*str, len2)) == NULL) {
if (*str)
free(*str);
*str = NULL;
return NO;
}
*str = str2;
*len = len2;
return YES;
}
static inline BOOL
xmlfactory_add2str(char **str, size_t *len, size_t *pos, const char *add)
{
size_t add_len;
add_len = strlen(add);
if (!xmlfactory_resize(str, len, add_len))
|