Modification of literal strings

David W. Stockton stockton@bcm.tmc.edu
Mon Nov 4 19:04:00 GMT 2002


I am not sure if I am e-mailing the right place but I just spent about 2 
hours reading FAQs
and searching the GCC web-site and cannot find the answer I need so I 
thought I would
try sending it to you...  if there is a more appropriate place please 
let me know and I will
ask there.

I am porting a set of code to Mac OS X 10.2 that modifies some literal 
strings... this causes
a bus error.  I have tried this code as an example:
    #include <stdio.h>
    void DoThis( char *str ) {
        int i;
        printf( "Entry string is \"%s\"\n", str );
        fflush( stdout );
        for( i = 0; str && str[i]; ++i )
            if( str[i] == ' ' )    str[i] = '_';
        printf( "Modified string is \"%s\"\n", str );   
        fflush( stdout );
    }
    int main( int argc, char **argv ) {
        DoThis( "Hello World" );
        return 0;
    }

Under DJGPP it runs without difficulty with the expected output.
Under Mingw32 and Cygwin it Segmentation faults after printing the
Entry string...
Under Mac OS X 10.2 / Darwin it dies with a Bus error.

Is there a compile time option or modification to the specs file
to make literal not readonly so this code runs on all the platforms?

Thanks,
David Stockton
stockton@bcm.tmc.edu




More information about the Gcc mailing list