Fix off-by-one errors
This commit is contained in:
parent
3472f4a1b1
commit
897db56dec
|
@ -6,7 +6,7 @@
|
||||||
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
|
/* By: tischmid <marvin@42.fr> +#+ +:+ +#+ */
|
||||||
/* +#+#+#+#+#+ +#+ */
|
/* +#+#+#+#+#+ +#+ */
|
||||||
/* Created: 2023/03/21 05:44:01 by tischmid #+# #+# */
|
/* Created: 2023/03/21 05:44:01 by tischmid #+# #+# */
|
||||||
/* Updated: 2023/03/24 01:40:48 by tischmid ### ########.fr */
|
/* Updated: 2023/03/24 20:27:15 by tischmid ### ########.fr */
|
||||||
/* */
|
/* */
|
||||||
/* ************************************************************************** */
|
/* ************************************************************************** */
|
||||||
|
|
||||||
|
@ -46,7 +46,10 @@ int ft_strlen(char *str)
|
||||||
|
|
||||||
void print_addr_vals(void *addr, unsigned int width, int hex, char *delim)
|
void print_addr_vals(void *addr, unsigned int width, int hex, char *delim)
|
||||||
{
|
{
|
||||||
while (width-- > 0)
|
unsigned int i;
|
||||||
|
|
||||||
|
i = -1;
|
||||||
|
while (++i < width)
|
||||||
{
|
{
|
||||||
if (hex)
|
if (hex)
|
||||||
print_hex(*(unsigned char *) addr, 2);
|
print_hex(*(unsigned char *) addr, 2);
|
||||||
|
@ -54,7 +57,7 @@ void print_addr_vals(void *addr, unsigned int width, int hex, char *delim)
|
||||||
write(1, addr, 1);
|
write(1, addr, 1);
|
||||||
else
|
else
|
||||||
write(1, ".", 1);
|
write(1, ".", 1);
|
||||||
if ((!hex || (hex && width % 2 == 0)) && *delim)
|
if ((!hex || (hex && i % 2 == 1)) && *delim)
|
||||||
write(1, delim, 1);
|
write(1, delim, 1);
|
||||||
addr++;
|
addr++;
|
||||||
}
|
}
|
||||||
|
@ -72,12 +75,14 @@ void *ft_print_memory(void *addr, unsigned int size)
|
||||||
{
|
{
|
||||||
if (size - (++lines) * WIDTH < 16)
|
if (size - (++lines) * WIDTH < 16)
|
||||||
width = size - lines * WIDTH;
|
width = size - lines * WIDTH;
|
||||||
|
if (!width)
|
||||||
|
break ;
|
||||||
print_hex((ULL) addr, 16);
|
print_hex((ULL) addr, 16);
|
||||||
write(1, ":", 1);
|
write(1, ":", 1);
|
||||||
write(1, DELIMITER, 1);
|
write(1, DELIMITER, 1);
|
||||||
print_addr_vals(addr, width, 1, DELIMITER);
|
print_addr_vals(addr, width, 1, DELIMITER);
|
||||||
missing_chars = (WIDTH - width) * (2 + ft_strlen(DELIMITER));
|
missing_chars = (WIDTH - width) * (2 + ft_strlen(DELIMITER));
|
||||||
missing_chars -= (WIDTH - width + 1) / 2;
|
missing_chars -= (WIDTH - width) / 2;
|
||||||
while (missing_chars-- > 0)
|
while (missing_chars-- > 0)
|
||||||
write(1, DELIMITER, 1);
|
write(1, DELIMITER, 1);
|
||||||
print_addr_vals(addr, width, 0, "");
|
print_addr_vals(addr, width, 0, "");
|
||||||
|
@ -106,7 +111,8 @@ void *ft_print_memory(void *addr, unsigned int size)
|
||||||
int main(void)
|
int main(void)
|
||||||
{
|
{
|
||||||
char *ptr = STR;
|
char *ptr = STR;
|
||||||
ft_print_memory(ptr, 92);
|
for (int i = 0; i < 33; ++i)
|
||||||
|
ft_print_memory(ptr, i);
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
*/ ////
|
*/ ////
|
||||||
|
|
Loading…
Reference in New Issue