The condition if ((1+*ps)=='z') ..... not have the same behavior of if ((1+*ps)=='b') .....
In the very simple attached file, you can reproduce it. for to reproduce, you will change 2 rows: 1) row 38 with row 37 2) row 30 with row 29 There is also a log file, so you can see how i compile it. Other info: $ lsb_release -rd Description: Ubuntu 9.04 Release: 9.04 -- Summary: g++ : char not find by pointer Product: gcc Version: 4.3.3 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: lxcc dot it dot gg at email dot it http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41319