h2pas: Failing on header guards and inline comments: `An unhandled exception occurred` and `EInOutError: File not open`
## Summary `h2pas` is failing on `#ifndef...#define...#endif` simple headers guards with `An unhandled exception occurred` and `EInOutError: File not open` along with 3 temporary files. `h2pas` is also failing `//` end of line comments. ## System Information - **Operating system:** Linux, AlmaLinux 9.2, x86_64 - **Processor architecture:** x86-64 - **Compiler version:** 3.3.1-13810-g1bcf4a5a8c - **Device:** Computer ## Steps to reproduce given the following 3 header files: `header_in_00.h` ```c int b(int c); ``` `header_in_01.h` ```c #ifndef HEADER_GUARD_H #define HEADER_GUARD_H int b(int c); #endif ``` `header_in_02.h` ```c // what? int b(int c); ``` When FPC trunk `h2pas` is run on them **(** `*.tmp` and `*.pp` removed on each run **)**: ```shell $ fpc -iW 3.3.1 $ h2pas header_in_00.h $ ls header_in_00.h header_in_00.pp header_in_01.h header_in_02.h $ h2pas header_in_01.h An unhandled exception occurred at $0000000000452F20: EInOutError: File not open $0000000000452F20 $ ls ext2.tmp ext3.tmp ext.tmp header_in_00.h header_in_01.h header_in_02.h $ h2pas header_in_02.h An unhandled exception occurred at $0000000000451A09: EInOutError: File not open $0000000000451A09 $ ls ext2.tmp ext3.tmp ext.tmp header_in_00.h header_in_01.h header_in_02.h ``` Only the `h2pas` run on `header_in_00.h` results in a valid `.pp` file. The other results in an an unhandled `EInOutError` exception and 3 temporary files. The `header_in_00.pp` created by the first run is valid. ```pascal unit header_in_00; interface { Automatically converted by H2Pas 0.99.16 from header_in_00.h The following command line parameters were used: header_in_00.h } {$IFDEF FPC} {$PACKRECORDS C} {$ENDIF} function b(c:longint):longint; implementation function b(c:longint):longint; begin { You must implement this function } end; end. ``` ## Example Project See Steps to reproduce. ## What is the current bug behavior? See Steps to reproduce. ## What is the expected (correct) behavior? The stable released FPC `h2pas` handles all 3 header files with no issues. ```shell $ fpc -iW 3.2.2 $ h2pas header_in_00.h $ ls header_in_00.h header_in_00.pp header_in_01.h header_in_02.h $ h2pas header_in_01.h $ ls header_in_00.h header_in_01.h header_in_01.pp header_in_02.h $ h2pas header_in_02.h $ ls header_in_00.h header_in_01.h header_in_02.h header_in_02.pp ``` All generated `header_in_*.pp` unit files are correct when using the stable `h2pas`. ## Relevant logs and/or screenshots See Steps to reproduce. ## Possible fixes None known.
issue