fix return values of asprintf replacement.
This commit is contained in:
parent
af8c4396fe
commit
2e8181a8d8
|
@ -65,14 +65,12 @@ vasprintf( char **strp, const char *fmt, va_list ap )
|
|||
int len;
|
||||
char tmp[1024];
|
||||
|
||||
if ((len = vsnprintf( tmp, sizeof(tmp), fmt, ap) ) < 0)
|
||||
*strp = 0;
|
||||
else if ((*strp = malloc( len + 1 ))) {
|
||||
if (len >= sizeof(tmp))
|
||||
if ((len = vsnprintf( tmp, sizeof(tmp), fmt, ap )) < 0 || !(*strp = malloc( len + 1 )))
|
||||
return -1;
|
||||
if (len >= (int)sizeof(tmp))
|
||||
vsprintf( *strp, fmt, ap );
|
||||
else
|
||||
memcpy( *strp, tmp, len + 1 );
|
||||
}
|
||||
return len;
|
||||
}
|
||||
#endif
|
||||
|
@ -138,7 +136,7 @@ int
|
|||
nfvasprintf( char **str, const char *fmt, va_list va )
|
||||
{
|
||||
int ret = vasprintf( str, fmt, va );
|
||||
if (!*str)
|
||||
if (ret < 0)
|
||||
oom();
|
||||
return ret;
|
||||
}
|
||||
|
|
10
src/util.c
10
src/util.c
|
@ -166,14 +166,12 @@ vasprintf( char **strp, const char *fmt, va_list ap )
|
|||
int len;
|
||||
char tmp[1024];
|
||||
|
||||
if ((len = vsnprintf( tmp, sizeof(tmp), fmt, ap) ) < 0)
|
||||
*strp = 0;
|
||||
else if ((*strp = malloc( len + 1 ))) {
|
||||
if (len >= sizeof(tmp))
|
||||
if ((len = vsnprintf( tmp, sizeof(tmp), fmt, ap )) < 0 || !(*strp = malloc( len + 1 )))
|
||||
return -1;
|
||||
if (len >= (int)sizeof(tmp))
|
||||
vsprintf( *strp, fmt, ap );
|
||||
else
|
||||
memcpy( *strp, tmp, len + 1 );
|
||||
}
|
||||
return len;
|
||||
}
|
||||
#endif
|
||||
|
@ -249,7 +247,7 @@ int
|
|||
nfvasprintf( char **str, const char *fmt, va_list va )
|
||||
{
|
||||
int ret = vasprintf( str, fmt, va );
|
||||
if (!*str)
|
||||
if (ret < 0)
|
||||
oom();
|
||||
return ret;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user