sanitize: fix const char * being used as non-const
This commit is contained in:
parent
ee6ee0bd34
commit
26d347dec6
11
src/line.c
11
src/line.c
@ -66,7 +66,7 @@ char *irc_line_pop(struct line *l)
|
||||
|
||||
void _irc_line_append(struct line *l, const char *s)
|
||||
{
|
||||
array_push(&l->words, (char *)s);
|
||||
array_push(&l->words, bip_strdup(s));
|
||||
}
|
||||
|
||||
void irc_line_append(struct line *l, const char *s)
|
||||
@ -110,11 +110,14 @@ char *irc_line_to_string_to(struct line *line, char *nick)
|
||||
{
|
||||
char *tmp;
|
||||
char *l;
|
||||
const char *prev;
|
||||
|
||||
tmp = (char *)irc_line_elem(line, 1);
|
||||
prev = irc_line_elem(line, 1);
|
||||
tmp = bip_strdup(prev);
|
||||
array_set(&line->words, 1, nick);
|
||||
l = irc_line_to_string(line);
|
||||
array_set(&line->words, 1, tmp);
|
||||
bip_cfree(prev);
|
||||
|
||||
return l;
|
||||
}
|
||||
@ -136,7 +139,7 @@ const char *irc_line_elem(struct line *line, int elem)
|
||||
|
||||
void irc_line_drop(struct line *line, int elem)
|
||||
{
|
||||
free(array_drop(&line->words, elem));
|
||||
bip_cfree(array_drop(&line->words, elem));
|
||||
}
|
||||
|
||||
int irc_line_elem_equals(struct line *line, int elem, const char *cmp)
|
||||
@ -214,7 +217,7 @@ void irc_line_free(struct line *l)
|
||||
int i;
|
||||
|
||||
for (i = 0; i < array_count(&l->words); i++)
|
||||
free(array_get(&l->words, i));
|
||||
bip_cfree(array_get(&l->words, i));
|
||||
array_deinit(&l->words);
|
||||
if (l->origin)
|
||||
free(l->origin);
|
||||
|
@ -642,7 +642,7 @@ void log_mode(log_t *logdata, const char *ircmask, const char *channel,
|
||||
if (mode_args) {
|
||||
for (i = 0; i < array_count(mode_args); i++) {
|
||||
snprintf(tmpbuf2, (size_t)LOGLINE_MAXLEN, "%s %s", tmpbuf,
|
||||
(char *)array_get(mode_args, i));
|
||||
(const char*)array_get(mode_args, i));
|
||||
tmp = tmpbuf;
|
||||
tmpbuf = tmpbuf2;
|
||||
tmpbuf2 = tmp;
|
||||
@ -1408,7 +1408,7 @@ list_t *backlog_lines(log_t *log, const char *bl, const char *cli_nick,
|
||||
irc_line_init(&l);
|
||||
l.origin = P_IRCMASK;
|
||||
if (dest == cli_nick)
|
||||
l.origin = (char *)bl;
|
||||
l.origin = bip_strdup(bl);
|
||||
_irc_line_append(&l, "PRIVMSG");
|
||||
_irc_line_append(&l, dest);
|
||||
_irc_line_append(&l, "End of backlog");
|
||||
|
15
src/util.c
15
src/util.c
@ -77,6 +77,17 @@ void *bip_realloc(void *ptr, size_t size)
|
||||
return r;
|
||||
}
|
||||
|
||||
void bip_cfree(const void *ptr)
|
||||
{
|
||||
if (!ptr)
|
||||
return;
|
||||
// there's no other way to free a const pointer
|
||||
#pragma GCC diagnostic push
|
||||
#pragma GCC diagnostic ignored "-Wcast-qual"
|
||||
free((void *)ptr);
|
||||
#pragma GCC diagnostic pop
|
||||
}
|
||||
|
||||
char *bip_strdup(const char *str)
|
||||
{
|
||||
char *r = strdup(str);
|
||||
@ -862,10 +873,10 @@ void array_ensure(array_t *a, int index)
|
||||
a->elemc = index + 1;
|
||||
}
|
||||
|
||||
void *array_drop(array_t *a, int index)
|
||||
const void *array_drop(array_t *a, int index)
|
||||
{
|
||||
int i;
|
||||
void *ret;
|
||||
const void *ret;
|
||||
|
||||
assert(a && array_includes(a, index));
|
||||
|
||||
|
13
src/util.h
13
src/util.h
@ -71,7 +71,7 @@ typedef struct hash_iterator {
|
||||
|
||||
typedef struct array {
|
||||
int elemc;
|
||||
void **elemv;
|
||||
const void **elemv;
|
||||
} array_t;
|
||||
|
||||
#define MOVE_STRING(dest, src) do {\
|
||||
@ -178,12 +178,13 @@ char *checkmode2text(int v);
|
||||
void *bip_malloc(size_t size);
|
||||
void *bip_calloc(size_t nmemb, size_t size);
|
||||
void *bip_realloc(void *ptr, size_t size);
|
||||
void bip_cfree(const void *ptr);
|
||||
char *bip_strdup(const char *str);
|
||||
char *bip_strcat_fit(size_t *remaining, char *str, const char *str2);
|
||||
char *bip_strcatf_fit(size_t *remaining, char *str, const char *str2, ...);
|
||||
void bip_clock_gettime(clockid_t clockid, struct timespec *tp);
|
||||
#define array_each(a, idx, ptr) for ((idx) = 0; \
|
||||
(idx) < (a)->elemc && (((ptr) = array_get((a), (idx))) || 1); \
|
||||
(idx) < (a)->elemc && (((ptr) = bip_strdup(array_get((a), (idx)))) || 1); \
|
||||
(idx)++)
|
||||
|
||||
void array_init(array_t *a);
|
||||
@ -192,7 +193,7 @@ void array_ensure(array_t *a, int index);
|
||||
array_t *array_extract(array_t *a, int index, int upto);
|
||||
void array_deinit(array_t *a);
|
||||
void array_free(array_t *a);
|
||||
void *array_drop(array_t *a, int index);
|
||||
const void *array_drop(array_t *a, int index);
|
||||
static inline int array_count(array_t *a)
|
||||
{
|
||||
assert(a);
|
||||
@ -212,7 +213,7 @@ static inline void array_set(array_t *a, int index, void *ptr)
|
||||
a->elemv[index] = ptr;
|
||||
}
|
||||
|
||||
static inline void *array_get(array_t *a, int index)
|
||||
static inline const void *array_get(array_t *a, int index)
|
||||
{
|
||||
assert(a && array_includes(a, index));
|
||||
return a->elemv[index];
|
||||
@ -234,13 +235,13 @@ static inline void *array_pop(array_t *a)
|
||||
if (a->elemc == 0)
|
||||
return NULL;
|
||||
if (a->elemc == 1) {
|
||||
void *ptr = a->elemv[0];
|
||||
void *ptr = bip_strdup(a->elemv[0]);
|
||||
free(a->elemv);
|
||||
a->elemv = NULL;
|
||||
a->elemc = 0;
|
||||
return ptr;
|
||||
}
|
||||
return a->elemv[--a->elemc];
|
||||
return (void *)bip_strdup(a->elemv[--a->elemc]);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user