Hi,

I am recently using indent to format my C program. However, I found that
indent changes a file forever by adding and removing a space.

The C file I am using is attached as a.c, its base64 is:
dm9pZCBhKHZvaWQgKCpiKSh2b2lkKSkKewoJaWYg
KGIpIHsKCQlyZXR1cm47Cgl9Cn0KCmludCBtYWlu
KCkKewoJcmV0dXJuIDA7Cn0K

The indent profile I am using is `-linux`. My indent version is
2.2.12.Please see the following example (I have to change tabs to 8 spaces,
because my email client does not allow me to paste tabs into emails):

$ cat a.c
void a(void (*b)(void))
{
        if (b) {
                return;
        }
}

int main()
{
        return 0;
}
$ indent -linux a.c
$ diff a.c a.c~
3c3
<       if(b) {
---
>       if (b) {
$ indent -linux a.c
$ diff a.c a.c~
3c3
<       if (b) {
---
>       if(b) {
$ indent --version
GNU indent 2.2.12
$

As you can see, the space after if is removed and then added forever.

The main characteristic of my program is that the function's argument
contains a function pointer, and the first line in the body of the function
is an if statement.

I think this is a bug because indent should change a file the second time
when invoked with the same profile. Could you please fix this bug?

Thank you,
ercli
void a(void (*b)(void))
{
	if (b) {
		return;
	}
}

int main()
{
	return 0;
}

Reply via email to