diff options
author | Sascha Hauer <s.hauer@pengutronix.de> | 2015-09-01 09:43:55 +0200 |
---|---|---|
committer | Sascha Hauer <s.hauer@pengutronix.de> | 2015-09-01 09:43:55 +0200 |
commit | b7ab2081b1f1f13f0823bb6e8e33884510e105d7 (patch) | |
tree | cb8a8a24e3c13c6a7c5dfe0f3907edba8b7666e9 /lib | |
parent | e582374ce333cb46a9f3f3ab3d75288f5caac0b3 (diff) | |
parent | c170240d3e5fb5cd134790dfc0c6e474fc0e6706 (diff) | |
download | barebox-b7ab2081b1f1f13f0823bb6e8e33884510e105d7.tar.gz barebox-b7ab2081b1f1f13f0823bb6e8e33884510e105d7.tar.xz |
Merge branch 'for-next/param'
Diffstat (limited to 'lib')
-rw-r--r-- | lib/parameter.c | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/parameter.c b/lib/parameter.c index b23885958b..fd05b49adf 100644 --- a/lib/parameter.c +++ b/lib/parameter.c @@ -389,8 +389,8 @@ struct param_d *dev_add_param_int(struct device_d *dev, const char *name, struct param_enum { struct param_d param; - int *value; - const char **names; + unsigned int *value; + const char * const *names; int num_names; int (*set)(struct param_d *p, void *priv); int (*get)(struct param_d *p, void *priv); @@ -441,7 +441,11 @@ static const char *param_enum_get(struct device_d *dev, struct param_d *p) } free(p->value); - p->value = strdup(pe->names[*pe->value]); + + if (*pe->value >= pe->num_names) + p->value = asprintf("invalid:%d", *pe->value); + else + p->value = strdup(pe->names[*pe->value]); return p->value; } @@ -467,7 +471,7 @@ static void param_enum_info(struct param_d *p) struct param_d *dev_add_param_enum(struct device_d *dev, const char *name, int (*set)(struct param_d *p, void *priv), int (*get)(struct param_d *p, void *priv), - int *value, const char **names, int num_names, void *priv) + int *value, const char * const *names, int num_names, void *priv) { struct param_enum *pe; struct param_d *p; |