l_push_char allocates memory which is freed with free_line. However, currently, the memory is not always freed when calling generate_error. If one aborts, that's fine. However, generate_error can also set the iostat variable. Thus, one should ensure that the memory is always freed. I wouldn't mind if someone, who knows libgfortran/io better than I, could confirm that the patch is okay. I don't want too free memory which is later used. Build and regtested on x86-64-linux. OK for the trunk? Tobias PS: Test case see PR. (I don't think it makes sense to include it in the test suite.) PPS: I see the following failures when regtesting; the LTO and the realloc one I know, but I haven't see the reassoc_4.f before. It cannot be due to my patch and when I run it manually, it also works: FAIL: gfortran.dg/lto/pr45586 f_lto_pr45586_0.o-f_lto_pr45586_0.o link, -O0 -flto (internal compiler error) FAIL: gfortran.dg/realloc_on_assign_5.f03 -O0 execution test FAIL: gfortran.dg/reassoc_4.f -O scan-tree-dump-times reassoc1 "[0-9] \\* " 22