Hi hackers,
The following code fails to pass the ecpg compilation, although it is accepted by the gcc compiler. ``` #if ABC /* this is a multi-line * comment including single star character */ int a = 1; #endif ``` The issue arises from the first '*' in the second line. Upon its removal, the ecpg compiler functions properly. ``` #if ABC /* this is a multi-line comment without single star character */ int a = 1; #endif ``` The problem has been identified as a bug in the `cppline` definition within the `pgc.l` file. ``` cppline {space}*#([^i][A-Za-z]*|{if}|{ifdef}|{ifndef}|{import})((\/\*[^*/]*\*+\/)|.|\\{space}*{newline})*{newline} ``` [Source](https://git.postgresql.org/gitweb/?p=postgresql.git;a=blob;f=src/interfaces/ecpg/preproc/pgc.l;h=f3c03482aec61956691f30426f61510920c5c702;hb=HEAD#l461) More specifically, the bug originates from the regex pattern for the C block code comment. ``` \/\*[^*/]*\*+\/ ``` Attempting another example: ``` #if ABC /* hello * world */ int a = 1; #endif ``` This time, the ecpg compiler also functions correctly. Confused! I am uncertain how to rectify the regex. I hope someone can address this bug.