Igor Mammedov <imamm...@redhat.com> writes: > On Fri, 7 Dec 2012 11:49:49 +0800 > liguang <lig.f...@cn.fujitsu.com> wrote: > >> if value to be translated is larger than INT64_MAX, >> this function will not be convenient for caller to >> be aware of it, so change a little for this. >> >> Signed-off-by: liguang <lig.f...@cn.fujitsu.com> >> --- >> cutils.c | 5 +++-- >> 1 files changed, 3 insertions(+), 2 deletions(-) >> >> diff --git a/cutils.c b/cutils.c >> index 4f0692f..8905b5e 100644 >> --- a/cutils.c >> +++ b/cutils.c >> @@ -219,11 +219,11 @@ static int64_t suffix_mul(char suffix, int64_t unit) >> int64_t strtosz_suffix_unit(const char *nptr, char **end, >> const char default_suffix, int64_t unit) >> { >> - int64_t retval = -1; >> + int64_t retval = -1, mul; >> char *endptr; >> unsigned char c; >> int mul_required = 0; >> - double val, mul, integral, fraction; >> + double val, integral, fraction; >> >> errno = 0; >> val = strtod(nptr, &endptr); >> @@ -246,6 +246,7 @@ int64_t strtosz_suffix_unit(const char *nptr, char >> **end, goto fail; >> } >> if ((val * mul >= INT64_MAX) || val < 0) { >> + retval = 0; > Why not to add Error argument to return errors instead of using return value? > That way function would be easier to generalize in future to handle whole > INT64 range.
Generalize when you have a user, not earlier. > And callers would check only returned error instead of return > value or if 'end' == 0. Checking the return value is sufficient now. What makes you think you have to check end, too?