summaryrefslogtreecommitdiffstats
path: root/helpers.c
diff options
context:
space:
mode:
Diffstat (limited to 'helpers.c')
-rw-r--r--helpers.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/helpers.c b/helpers.c
index c83cd2cb0..5b47b68c6 100644
--- a/helpers.c
+++ b/helpers.c
@@ -25,7 +25,7 @@
uint32_t address_to_bits(uint32_t addr)
{
unsigned int lzb = 0;
- while (((1 << (31 - lzb)) & ~addr) != 0)
+ while (((1u << (31 - lzb)) & ~addr) != 0)
lzb++;
return 32 - lzb;
}
@@ -106,15 +106,16 @@ char* strtok_r(char *str, const char *delim, char **nextp)
/* strndup is a POSIX function not present in MinGW */
char *strndup(const char *src, size_t maxlen)
{
- if (strlen(src) > maxlen) {
- char *retbuf;
- if ((retbuf = malloc(1 + maxlen)) != NULL) {
- memcpy(retbuf, src, maxlen);
- retbuf[maxlen] = '\0';
- }
- return retbuf;
+ char *retbuf;
+ size_t len;
+ for (len = 0; len < maxlen; len++)
+ if (src[len] == '\0')
+ break;
+ if ((retbuf = malloc(1 + len)) != NULL) {
+ memcpy(retbuf, src, len);
+ retbuf[len] = '\0';
}
- return strdup(src);
+ return retbuf;
}
#endif