Review possible memory leak with my_strndup()
This commit is contained in:
parent
7caedff9ca
commit
e5d5f6e367
1 changed files with 11 additions and 8 deletions
19
src/external/tinyobj_loader_c.h
vendored
19
src/external/tinyobj_loader_c.h
vendored
|
@ -453,6 +453,11 @@ static void parseFloat3(float *x, float *y, float *z, const char **token) {
|
||||||
(*z) = parseFloat(token);
|
(*z) = parseFloat(token);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static unsigned int my_strnlen(const char *s, unsigned int n) {
|
||||||
|
const char *p = memchr(s, 0, n);
|
||||||
|
return p ? (unsigned int)(p - s) : n;
|
||||||
|
}
|
||||||
|
|
||||||
static char *my_strdup(const char *s, unsigned int max_length) {
|
static char *my_strdup(const char *s, unsigned int max_length) {
|
||||||
char *d;
|
char *d;
|
||||||
unsigned int len;
|
unsigned int len;
|
||||||
|
@ -478,15 +483,13 @@ static char *my_strndup(const char *s, unsigned int len) {
|
||||||
if (s == NULL) return NULL;
|
if (s == NULL) return NULL;
|
||||||
if (len == 0) return NULL;
|
if (len == 0) return NULL;
|
||||||
|
|
||||||
d = (char *)TINYOBJ_MALLOC(len + 1); /* + '\0' */
|
slen = my_strnlen(s, len);
|
||||||
slen = strlen(s);
|
d = (char *)TINYOBJ_MALLOC(slen + 1); /* + '\0' */
|
||||||
if (slen < len) {
|
if (!d) {
|
||||||
memcpy(d, s, slen);
|
return NULL;
|
||||||
d[slen] = '\0';
|
|
||||||
} else {
|
|
||||||
memcpy(d, s, len);
|
|
||||||
d[len] = '\0';
|
|
||||||
}
|
}
|
||||||
|
memcpy(d, s, slen);
|
||||||
|
d[slen] = '\0';
|
||||||
|
|
||||||
return d;
|
return d;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue