forked from Bananymous/banan-os
				
			LibC: Fix strndup
I did not null terminate short strndup copies :D
This commit is contained in:
		
							parent
							
								
									d1c3d3d5aa
								
							
						
					
					
						commit
						17014bb8de
					
				|  | @ -189,27 +189,28 @@ int strcoll(const char* s1, const char* s2) | ||||||
| 
 | 
 | ||||||
| char* strdup(const char* str) | char* strdup(const char* str) | ||||||
| { | { | ||||||
| 	const size_t size = strlen(str) + 1; | 	const size_t size = strlen(str); | ||||||
| 
 | 
 | ||||||
| 	char* new_str = (char*)malloc(size); | 	char* new_str = (char*)malloc(size + 1); | ||||||
| 	if (new_str == nullptr) | 	if (new_str == nullptr) | ||||||
| 		return nullptr; | 		return nullptr; | ||||||
| 
 | 
 | ||||||
| 	memcpy(new_str, str, size); | 	memcpy(new_str, str, size); | ||||||
|  | 	new_str[size] = '\0'; | ||||||
| 	return new_str; | 	return new_str; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| char* strndup(const char* str, size_t size) | char* strndup(const char* str, size_t size) | ||||||
| { | { | ||||||
| 	if (strlen(str) < size) | 	if (size_t len = strlen(str); len < size) | ||||||
| 		size = strlen(str); | 		size = len; | ||||||
| 	size += 1; |  | ||||||
| 
 | 
 | ||||||
| 	char* new_str = (char*)malloc(size); | 	char* new_str = (char*)malloc(size + 1); | ||||||
| 	if (new_str == nullptr) | 	if (new_str == nullptr) | ||||||
| 		return nullptr; | 		return nullptr; | ||||||
| 
 | 
 | ||||||
| 	memcpy(new_str, str, size); | 	memcpy(new_str, str, size); | ||||||
|  | 	new_str[size] = '\0'; | ||||||
| 	return new_str; | 	return new_str; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue