Commit c4beee76 by Ben Straub

Introduce git__substrdup

parent 8c36a3cd
......@@ -606,26 +606,26 @@ int gitno_extract_url_parts(
start = url;
if (at && at < slash) {
start = at+1;
*username = git__strndup(url, at - url);
*username = git__substrdup(url, at - url);
}
if (colon && colon < at) {
git__free(*username);
*username = git__strndup(url, colon-url);
*password = git__strndup(colon+1, at-colon-1);
*username = git__substrdup(url, colon-url);
*password = git__substrdup(colon+1, at-colon-1);
colon = strchr(at, ':');
}
if (colon == NULL) {
*port = git__strdup(default_port);
} else {
*port = git__strndup(colon + 1, slash - colon - 1);
*port = git__substrdup(colon + 1, slash - colon - 1);
}
GITERR_CHECK_ALLOC(*port);
end = colon == NULL ? slash : colon;
*host = git__strndup(start, end - start);
*host = git__substrdup(start, end - start);
GITERR_CHECK_ALLOC(*host);
return 0;
......
......@@ -51,11 +51,7 @@ GIT_INLINE(char *) git__strndup(const char *str, size_t n)
while (length < n && str[length])
++length;
ptr = (char*)malloc(length + 1);
if (!ptr) {
giterr_set_oom();
return NULL;
}
ptr = (char*)git__malloc(length + 1);
if (length)
memcpy(ptr, str, length);
......@@ -65,6 +61,14 @@ GIT_INLINE(char *) git__strndup(const char *str, size_t n)
return ptr;
}
/* NOTE: This doesn't do null or '\0' checking. Watch those boundaries! */
GIT_INLINE(char *) git__substrdup(const char *start, size_t n)
{
char *ptr = (char*)git__calloc(n+1, sizeof(char));
memcpy(ptr, start, n);
return ptr;
}
GIT_INLINE(void *) git__realloc(void *ptr, size_t size)
{
void *new_ptr = realloc(ptr, size);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment