Pelles C forum

Pelles C => Bug reports => Topic started by: BottleNeck on June 29, 2010, 09:03:14 PM

Title: Access violation while call strtok function (write to read-only rdata section)
Post by: BottleNeck on June 29, 2010, 09:03:14 PM
Problem is in trying to write to .rdata section of produced .exe file, because of 40000040 (only readable) section flags.
Set it to C0000040 (readable and writeable) solve the problem (but only with hex editor).
Code sample:
#include <stdio.h>
#include <string.h>

int main(void)
{
  char *p;
   char *str = "LINE TO BE SEPARATED";
   char *delimiter =  " ";
  p = strtok(str,delimiter);
  printf(p);
  do {
    p = strtok('\0', ", ");
    if(p) printf("|%s", p);
  } while(p);

  return 0;
}

Title: Re: Access violation while call strtok function (write to read-only rdata sectio
Post by: iZzz32 on June 30, 2010, 06:05:56 AM
Not a bug. String literals are constants. Use:
char str[] = "LINE TO BE SEPARATED";
Title: Re: Access violation while call strtok function (write to read-only rdata section)
Post by: BottleNeck on June 30, 2010, 10:09:24 AM
Example above I get from http://www.opengroup.org/onlinepubs/000095399/functions/strtok.html
Thank you for explanation.