Wines IsBadReadPtr() is not working anymore, since memory reads are optimized away, since the result of the read is not used. However the memory is marked volatile so this should perhaps not happen.
See attached testcase and check the assembly -- Summary: volatile memory access optimized away Product: gcc Version: 4.3.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: marcus at jet dot franken dot de http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33653