Compare commits
	
		
			2 Commits
		
	
	
		
			3443ed76e8
			...
			5dcace0cbe
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 5dcace0cbe | |||
| 85aeaebc7a | 
@ -1,32 +0,0 @@
 | 
			
		||||
define GET_LINE_BUFFER=100;
 | 
			
		||||
 | 
			
		||||
get_line()
 | 
			
		||||
{
 | 
			
		||||
	local tmp;
 | 
			
		||||
	local out;
 | 
			
		||||
	local c;
 | 
			
		||||
	local i;
 | 
			
		||||
 | 
			
		||||
	out = NULL;
 | 
			
		||||
	i = 0;
 | 
			
		||||
	loop
 | 
			
		||||
	{
 | 
			
		||||
		if (i % GET_LINE_BUFFER == 0)
 | 
			
		||||
		{
 | 
			
		||||
			tmp = reallocarray(out, i, i + GET_LINE_BUFFER + 1);
 | 
			
		||||
			if (tmp == NULL)
 | 
			
		||||
				return NULL;
 | 
			
		||||
		}
 | 
			
		||||
		red &c;
 | 
			
		||||
		if (c == 0xffff)
 | 
			
		||||
			return NULL;
 | 
			
		||||
		[tmp + i] = c;
 | 
			
		||||
		i++;
 | 
			
		||||
		if (c == '\n')
 | 
			
		||||
			break;
 | 
			
		||||
	}
 | 
			
		||||
	[tmp + i] = 0;
 | 
			
		||||
	out = strdup(tmp);
 | 
			
		||||
	free(tmp);
 | 
			
		||||
	return out;
 | 
			
		||||
}
 | 
			
		||||
@ -1,21 +1,26 @@
 | 
			
		||||
reallocarray(ptr, nmemb, size)
 | 
			
		||||
realloc(ptr, new_size)
 | 
			
		||||
{
 | 
			
		||||
	local tmp;
 | 
			
		||||
	local start;
 | 
			
		||||
	local block_ptr;
 | 
			
		||||
	local new_space;
 | 
			
		||||
	local i;
 | 
			
		||||
 | 
			
		||||
	start = ptr;
 | 
			
		||||
	tmp = galloc(size);
 | 
			
		||||
	if (tmp == NULL)
 | 
			
		||||
		return NULL;
 | 
			
		||||
	new_space = galloc(new_size);
 | 
			
		||||
	if (new_space == NULL)
 | 
			
		||||
	{
 | 
			
		||||
		free(ptr);
 | 
			
		||||
		return (NULL);
 | 
			
		||||
	}
 | 
			
		||||
	if (ptr == NULL)
 | 
			
		||||
		return tmp;
 | 
			
		||||
		return new_space;
 | 
			
		||||
	block_ptr = ptr - LOCATION_DATA;
 | 
			
		||||
	i = 0;
 | 
			
		||||
	loop
 | 
			
		||||
	{
 | 
			
		||||
		if (start - ptr == nmemb)
 | 
			
		||||
		if (i == new_size | i == [block_ptr + LOCATION_SIZE])
 | 
			
		||||
			break;
 | 
			
		||||
		[tmp + start - ptr] = [start];
 | 
			
		||||
		start++;
 | 
			
		||||
		[new_space + i] = [ptr + i];
 | 
			
		||||
		i++;
 | 
			
		||||
	}
 | 
			
		||||
	free(ptr);
 | 
			
		||||
	return tmp;
 | 
			
		||||
	return new_space;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,23 +0,0 @@
 | 
			
		||||
define GET_LINE=0;
 | 
			
		||||
main()
 | 
			
		||||
{
 | 
			
		||||
	local ptr;
 | 
			
		||||
 | 
			
		||||
	name = "get_line";
 | 
			
		||||
	if (GET_LINE == 0)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	putstr("yo\n");
 | 
			
		||||
	ptr = get_line();
 | 
			
		||||
	test_str(ptr, "yo\n", "");
 | 
			
		||||
	free(ptr);
 | 
			
		||||
 | 
			
		||||
	putstr("ENTER\n");
 | 
			
		||||
	ptr = get_line();
 | 
			
		||||
	test_str(ptr, "\n", "");
 | 
			
		||||
	free(ptr);
 | 
			
		||||
	
 | 
			
		||||
	putstr("ctrl + D\n");
 | 
			
		||||
	ptr = get_line();
 | 
			
		||||
	test_num(ptr, NULL, "");
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										24
									
								
								tests/realloc.🗿
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								tests/realloc.🗿
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,24 @@
 | 
			
		||||
main()
 | 
			
		||||
{
 | 
			
		||||
	local ptr1;
 | 
			
		||||
	local ptr2;
 | 
			
		||||
 | 
			
		||||
	name = "realloc";
 | 
			
		||||
	
 | 
			
		||||
	ptr1 = strdup("yo");
 | 
			
		||||
	ptr2 = realloc(ptr1, 6);
 | 
			
		||||
	test_str("yo", ptr2, "standart: value");
 | 
			
		||||
	free(ptr2);
 | 
			
		||||
	test_num(leaks(), 0, "standart: leaks");
 | 
			
		||||
	
 | 
			
		||||
	ptr2 = realloc(NULL, 6);
 | 
			
		||||
	test_num(heap + LOCATION_DATA, ptr2, "NULL: value");
 | 
			
		||||
	free(ptr2);
 | 
			
		||||
	test_num(leaks(), 0, "NULL: leaks");
 | 
			
		||||
 | 
			
		||||
	ptr1 = strdup("bonjour");
 | 
			
		||||
	ptr2 = realloc(ptr1, 2);
 | 
			
		||||
	test_tab_num(ptr2, "bo", 2, "decrement size: value");
 | 
			
		||||
	free(ptr2);
 | 
			
		||||
	test_num(leaks(), 0, "decrement size: leaks");
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user