config: don't multiply in parse_unit_factor()
parse_unit_factor() multiplies the number that is passed to it with the value of a recognized unit factor (K, M or G for 2^10, 2^20 and 2^30, respectively). All callers pass in 1 as a number, though, which allows them to check the actual multiplication for overflow before they are doing it themselves. Ignore the passed in number and don't multiply, as this feature of parse_unit_factor() is not used anymore. Rename the output parameter to reflect that it's not about the end result anymore, but just about the unit factor. Suggested-by: Johannes Schindelin <johannes.schindelin@gmx.de> Signed-off-by: Rene Scharfe <l.s.r@web.de> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
3fb72c7b4d
commit
664178e8e2
16
config.c
16
config.c
@ -834,20 +834,22 @@ static int git_parse_source(config_fn_t fn, void *data,
|
|||||||
return error_return;
|
return error_return;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int parse_unit_factor(const char *end, uintmax_t *val)
|
static int parse_unit_factor(const char *end, uintmax_t *factor)
|
||||||
{
|
{
|
||||||
if (!*end)
|
if (!*end) {
|
||||||
|
*factor = 1;
|
||||||
return 1;
|
return 1;
|
||||||
|
}
|
||||||
else if (!strcasecmp(end, "k")) {
|
else if (!strcasecmp(end, "k")) {
|
||||||
*val *= 1024;
|
*factor = 1024;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (!strcasecmp(end, "m")) {
|
else if (!strcasecmp(end, "m")) {
|
||||||
*val *= 1024 * 1024;
|
*factor = 1024 * 1024;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else if (!strcasecmp(end, "g")) {
|
else if (!strcasecmp(end, "g")) {
|
||||||
*val *= 1024 * 1024 * 1024;
|
*factor = 1024 * 1024 * 1024;
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
@ -859,7 +861,7 @@ static int git_parse_signed(const char *value, intmax_t *ret, intmax_t max)
|
|||||||
char *end;
|
char *end;
|
||||||
intmax_t val;
|
intmax_t val;
|
||||||
uintmax_t uval;
|
uintmax_t uval;
|
||||||
uintmax_t factor = 1;
|
uintmax_t factor;
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
val = strtoimax(value, &end, 0);
|
val = strtoimax(value, &end, 0);
|
||||||
@ -888,7 +890,7 @@ static int git_parse_unsigned(const char *value, uintmax_t *ret, uintmax_t max)
|
|||||||
if (value && *value) {
|
if (value && *value) {
|
||||||
char *end;
|
char *end;
|
||||||
uintmax_t val;
|
uintmax_t val;
|
||||||
uintmax_t factor = 1;
|
uintmax_t factor;
|
||||||
|
|
||||||
errno = 0;
|
errno = 0;
|
||||||
val = strtoumax(value, &end, 0);
|
val = strtoumax(value, &end, 0);
|
||||||
|
Reference in New Issue
Block a user