Skip to content

Commit

Permalink
Corrected some const-correctness errors in libconfig
Browse files Browse the repository at this point in the history
Signed-off-by: Haru <haru@dotalux.com>
  • Loading branch information
MishimaHaruna committed Mar 20, 2016
1 parent ddbaad9 commit 787d25e
Show file tree
Hide file tree
Showing 6 changed files with 25 additions and 31 deletions.
6 changes: 3 additions & 3 deletions 3rdparty/libconfig/extra/gen/grammar.y
Expand Up @@ -54,7 +54,7 @@ extern int libconfig_yyget_lineno();
static const char *err_array_elem_type = "mismatched element type in array";
static const char *err_duplicate_setting = "duplicate setting name";

#define _delete(P) free((void *)(P))
#define _delete(P) free(P)

#define IN_ARRAY() \
(ctx->parent && (ctx->parent->type == CONFIG_TYPE_ARRAY))
Expand Down Expand Up @@ -332,7 +332,7 @@ simple_value:
{
if(IN_ARRAY() || IN_LIST())
{
const char *s = parsectx_take_string(ctx);
char *s = parsectx_take_string(ctx);
struct config_setting_t *e = config_setting_set_string_elem(ctx->parent, -1, s);
_delete(s);

Expand All @@ -348,7 +348,7 @@ simple_value:
}
else
{
const char *s = parsectx_take_string(ctx);
char *s = parsectx_take_string(ctx);
config_setting_set_string(ctx->setting, s);
_delete(s);
}
Expand Down
6 changes: 3 additions & 3 deletions 3rdparty/libconfig/grammar.c
Expand Up @@ -95,7 +95,7 @@ extern int libconfig_yyget_lineno();
static const char *err_array_elem_type = "mismatched element type in array";
static const char *err_duplicate_setting = "duplicate setting name";

#define _delete(P) free((void *)(P))
#define _delete(P) free(P)

#define IN_ARRAY() \
(ctx->parent && (ctx->parent->type == CONFIG_TYPE_ARRAY))
Expand Down Expand Up @@ -1751,7 +1751,7 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
{
if(IN_ARRAY() || IN_LIST())
{
const char *s = parsectx_take_string(ctx);
char *s = parsectx_take_string(ctx);
struct config_setting_t *e = config_setting_set_string_elem(ctx->parent, -1, s);
_delete(s);

Expand All @@ -1767,7 +1767,7 @@ YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
}
else
{
const char *s = parsectx_take_string(ctx);
char *s = parsectx_take_string(ctx);
config_setting_set_string(ctx->setting, s);
_delete(s);
}
Expand Down
8 changes: 4 additions & 4 deletions 3rdparty/libconfig/libconfig.c
Expand Up @@ -49,8 +49,8 @@
#define CHUNK_SIZE 16
#define FLOAT_PRECISION DBL_DIG

#define _new(T) (T *)calloc(1, sizeof(T)) /* zeroed */
#define _delete(P) free((void *)(P))
#define _new(T) calloc(1, sizeof(T)) /* zeroed */
#define _delete(P) free(P)

/* ------------------------------------------------------------------------- */

Expand Down Expand Up @@ -567,7 +567,7 @@ static int __config_read(struct config_t *config, FILE *stream, const char *file

/* Reinitialize the config */
void (*destructor)(void *) = config->destructor;
const char *include_dir = config->include_dir;
char *include_dir = config->include_dir;
unsigned short tab_width = config->tab_width;
int options = config->options;

Expand Down Expand Up @@ -743,7 +743,7 @@ int config_write_file(struct config_t *config, const char *filename)
void config_destroy(struct config_t *config)
{
unsigned int count = config->num_filenames;
const char **f;
char **f;

__config_setting_destroy(config->root);

Expand Down
6 changes: 3 additions & 3 deletions 3rdparty/libconfig/libconfig.h
Expand Up @@ -109,12 +109,12 @@ struct config_t
int options;
unsigned short tab_width;
short default_format;
const char *include_dir;
char *include_dir;
const char *error_text;
const char *error_file;
int error_line;
enum config_error_t error_type;
const char **filenames;
char **filenames;
unsigned int num_filenames;
};

Expand Down Expand Up @@ -206,7 +206,7 @@ extern LIBCONFIG_API struct config_setting_t *config_setting_set_string_elem(
struct config_setting_t *setting, int idx, const char *value);

#define /* const char * */ config_get_include_dir(/* const struct config_t * */ C) \
((C)->include_dir)
((const char *)(C)->include_dir)

#define /* int */ config_setting_type(/* const struct config_setting_t * */ S) \
((S)->type)
Expand Down
24 changes: 9 additions & 15 deletions 3rdparty/libconfig/scanctx.c
Expand Up @@ -38,25 +38,23 @@ static const char *err_include_too_deep = "include file nesting too deep";
/* ------------------------------------------------------------------------- */

static const char *__scanctx_add_filename(struct scan_context *ctx,
const char *filename)
char *filename)
{
unsigned int count = ctx->num_filenames;
const char **f;
char **f;

for(f = ctx->filenames; count > 0; ++f, --count)
{
if(!strcmp(*f, filename))
{
free((void *)filename);
free(filename);
return(*f); /* already in list */
}
}

if((ctx->num_filenames % CHUNK_SIZE) == 0)
{
ctx->filenames = (const char **)realloc(
(void *)ctx->filenames,
(ctx->num_filenames + CHUNK_SIZE) * sizeof(const char *));
ctx->filenames = realloc(ctx->filenames, (ctx->num_filenames + CHUNK_SIZE) * sizeof(char *));
}

ctx->filenames[ctx->num_filenames] = filename;
Expand All @@ -69,16 +67,14 @@ static const char *__scanctx_add_filename(struct scan_context *ctx,
void scanctx_init(struct scan_context *ctx, const char *top_filename)
{
memset(ctx, 0, sizeof(struct scan_context));
#ifndef __clang_analyzer__ // FIXME: Clang's static analyzer doesn't like this
if(top_filename)
ctx->top_filename = __scanctx_add_filename(ctx, strdup(top_filename));
#endif // __clang_analyzer__
}

/* ------------------------------------------------------------------------- */

const char **scanctx_cleanup(struct scan_context *ctx,
unsigned int *num_filenames)
char **scanctx_cleanup(struct scan_context *ctx,
unsigned int *num_filenames)
{
int i;

Expand All @@ -97,7 +93,7 @@ FILE *scanctx_push_include(struct scan_context *ctx, void *buffer,
const char **error)
{
FILE *fp = NULL;
const char *file;
char *file;
char *full_file = NULL;

*error = NULL;
Expand All @@ -119,20 +115,18 @@ FILE *scanctx_push_include(struct scan_context *ctx, void *buffer,
}

fp = fopen(full_file ? full_file : file, "rt");
free((void *)full_file);
free(full_file);

if(fp)
{
ctx->streams[ctx->depth] = fp;
#ifndef __clang_analyzer__ // FIXME: Clang's static analyzer doesn't like this
ctx->files[ctx->depth] = __scanctx_add_filename(ctx, file);
#endif // __clang_analyzer__
ctx->buffers[ctx->depth] = buffer;
++(ctx->depth);
}
else
{
free((void *)file);
free(file);
*error = err_bad_include;
}

Expand Down
6 changes: 3 additions & 3 deletions 3rdparty/libconfig/scanctx.h
Expand Up @@ -40,13 +40,13 @@ struct scan_context
FILE *streams[MAX_INCLUDE_DEPTH];
int depth;
strbuf_t string;
const char **filenames;
char **filenames;
unsigned int num_filenames;
};

extern void scanctx_init(struct scan_context *ctx, const char *top_filename);
extern const char **scanctx_cleanup(struct scan_context *ctx,
unsigned int *num_filenames);
extern char **scanctx_cleanup(struct scan_context *ctx,
unsigned int *num_filenames);

extern FILE *scanctx_push_include(struct scan_context *ctx, void *prev_buffer,
const char **error);
Expand Down

0 comments on commit 787d25e

Please sign in to comment.