I have encountered a couple problems with strings in the most recent GPC beta
version.  Most of the problems are due to missing range checks, e.g. when
assigning a string to a shorter string, or passing a string to a procedure
with a shorter string as formal parameter.
1) The program below illustrates some of these problems:
  program Test5;
  var
    s1 : string [500];
    s2 : string [10];
  type
    str5 = string [5];
  procedure p1 (s : str5);
  begin
    Writeln (s.capacity, '    ', Length (s));
  end;
  begin
    s1 := 'This is a relatively long string';
    s2 := s1;   { Copies all of s1 to s2; not just the first 10 characters }
    p1 (s1);  { Passes all of s1 to procedure p1 }
    p1 (s2);
  end.
Before exiting with a SIGSEGV exception (under DJGPP), the program prints
  5    32
  5    32
2) Another facet of the problem occurs when reading strings from a text file
with Read[ln] (F, stringVar).
If you call Readln, the program will read from the file until the next CR/LF,
no matter the size (length) of stringVar, and try to copy the entire line to
the variables stringVar (which will almost surely crash the program somehow;
but not necessarily in the call to Readln. The SIGSEGV exception could come
later, and with a stack trace which makes no sense). 
On the other hand, Read (F, stringVar) only reads a maximum of
Length(stringVar) characters [as it should].
Jesper Lund