[Bug c/38167] Accessor to stdin is breaks on -O2 optimization

aleksi dot nurmi at helsinki dot fi gcc-bugzilla@gcc.gnu.org
Mon Nov 17 15:12:00 GMT 2008



------- Comment #4 from aleksi dot nurmi at helsinki dot fi  2008-11-17 15:11 -------
I found an even shorter way to make it segfault, with no inline functions at
all. It's an -O2 problem, then.

#include <stdio.h>

struct iostream {
    FILE *f;
};

static struct iostream our_stdin = { 0 };

void read_char(struct iostream* ios)
{
    if (ios->f == 0)
        if (ios == &our_stdin)
            ios->f = stdin;
    fgetc(ios->f);
}

int main()
{
    read_char(&our_stdin);

    return 0;
}


-- 

aleksi dot nurmi at helsinki dot fi changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|Inline accessor to stdin is |Accessor to stdin is breaks
                   |breaks on -O2 optimization  |on -O2 optimization


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38167



More information about the Gcc-bugs mailing list