projects
/
fio.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
num2str(): Use asprintf() instead of malloc()
[fio.git]
/
lib
/
num2str.c
diff --git
a/lib/num2str.c
b/lib/num2str.c
index 1abe22f33794c0ccf6b724e74aef7a1f62271166..ce17727598d16e51ddb25576ef5718d3d223abe0 100644
(file)
--- a/
lib/num2str.c
+++ b/
lib/num2str.c
@@
-4,6
+4,7
@@
#include <string.h>
#include "../compiler/compiler.h"
#include <string.h>
#include "../compiler/compiler.h"
+#include "../oslib/asprintf.h"
#include "num2str.h"
#define ARRAY_SIZE(x) (sizeof((x)) / (sizeof((x)[0])))
#include "num2str.h"
#define ARRAY_SIZE(x) (sizeof((x)) / (sizeof((x)[0])))
@@
-39,10
+40,6
@@
char *num2str(uint64_t num, int maxlen, int base, int pow2, enum n2s_unit units)
compiletime_assert(sizeof(sistr) == sizeof(iecstr), "unit prefix arrays must be identical sizes");
assert(units < ARRAY_SIZE(unitstr));
compiletime_assert(sizeof(sistr) == sizeof(iecstr), "unit prefix arrays must be identical sizes");
assert(units < ARRAY_SIZE(unitstr));
- buf = malloc(128);
- if (!buf)
- return NULL;
-
if (pow2)
unitprefix = iecstr;
else
if (pow2)
unitprefix = iecstr;
else
@@
-91,8
+88,9
@@
done:
if (post_index >= ARRAY_SIZE(sistr))
post_index = 0;
if (post_index >= ARRAY_SIZE(sistr))
post_index = 0;
- sprintf(buf, "%llu%s%s", (unsigned long long) num,
- unitprefix[post_index], unitstr[units]);
+ if (asprintf(&buf, "%llu%s%s", (unsigned long long) num,
+ unitprefix[post_index], unitstr[units]) < 0)
+ buf = NULL;
return buf;
}
return buf;
}
@@
-114,7
+112,8
@@
done:
sprintf(fmt, "%%.%df", (int)(maxlen - strlen(tmp) - 1));
sprintf(tmp, fmt, (double)modulo / (double)thousand);
sprintf(fmt, "%%.%df", (int)(maxlen - strlen(tmp) - 1));
sprintf(tmp, fmt, (double)modulo / (double)thousand);
- sprintf(buf, "%llu.%s%s%s", (unsigned long long) num, &tmp[2],
- unitprefix[post_index], unitstr[units]);
+ if (asprintf(&buf, "%llu.%s%s%s", (unsigned long long) num, &tmp[2],
+ unitprefix[post_index], unitstr[units]) < 0)
+ buf = NULL;
return buf;
}
return buf;
}