[fpc-pascal]Strange Segfault...

James Mills prologic at daisy.ods.org
Mon Jul 14 16:01:31 CEST 2003


On Mon, Jul 14, 2003 at 06:48:06AM -0700, Alan Mead wrote:
> I'm running into this string problem as well.  I'd like to use
> strings longer than 255 but I get strange errors like:
> 
> [amead at alan seq-bayes]$ fpc mcmc3pl.pas
> Free Pascal Compiler version 1.0.6 [2002/05/23] for i386
> Copyright (c) 1993-2002 by Florian Klaempfl
> Target OS: Linux for i386
> Compiling mcmc3pl.pas
> Assembling mcmc3pl
> Linking mcmc3pl
> mcmc3pl.o: In function `_READ_CONFIG$INTEGER$INTEGER$STRING$STRING':
> mcmc3pl.o(.text+0x147): undefined reference to
> `FPC_READ_TEXT_LONGSTR'
> mcmc3pl.o(.text+0x17c): undefined reference to `FPC_VAL_SINT_LONGSTR'
> mcmc3pl.o(.text+0x243): undefined reference to
> `FPC_READ_TEXT_LONGSTR'
> mcmc3pl.o(.text+0x278): undefined reference to `FPC_VAL_SINT_LONGSTR'
> mcmc3pl.pas(215) Error: Error while linking
> Closing script ppas.sh
> 
> [amead at alan seq-bayes]$ fpc test_string500
> Free Pascal Compiler version 1.0.6 [2002/05/23] for i386
> Copyright (c) 1993-2002 by Florian Klaempfl
> Target OS: Linux for i386
> Compiling test_string500.pas
> test_string500.pas(15,13) Fatal: Internal error 8888
> 
> These errors disappear when I edit the string definitions back to
> length 255 or less. Should I just avoid using longer strings or is
> there a compiler switch I have to include?  Or is there a tutorial on
> FPC strings (I never used Delphi much)?  Or is this behavior fixed in
> 1.0.10?

I believe there is a compiler switch.

cheers
James

> 
> -Alan 
> 
> --- Matt Emson <memsom at interalpha.co.uk> wrote:
> > > Yes and no. Why is it so bad to write a function in that way ? It
> > could
> > > of course be written two different ways, but I'd rather this way
> > where I
> > > modify the string passed to the function.
> > >
> > > Explain it to me :) (I'm the only one that works on this project
> > of
> > > ~30,000 LOC, so I don't see any problem)
> > 
> > Turbo Pascal and Delphi 1 had a type called 'String'. This was
> > limited to
> > 255 chars, size of 256 chars, and position 0 holds the strings
> > length.
> > Delphi 2+ has a type called shortstring that behaves in exactly the
> > same way
> > as the old style string.
> > 
> > Delphi 2+ altered the string type to be a pointer to a chunk of
> > memory, and
> > added a whole load of compiler magic to make strings automatically
> > grow and
> > shrink, added reference counting and 'copy of change' functionality
> > (the
> > last two to aid in not having to copy a string until someone alters
> > it.)
> > This is where your problem lies.
> > 
> > Because FPC mimics Delphi string functionality, basically you'll
> > end up with
> > similar results.
> > 
> > You'd be much better off Returning a value, and thereby avoiding
> > the
> > potential for big allocation/deallocations. That or use
> > shortstrings.
> > 
> > Matt
> > 
> > 
> > 
> > _______________________________________________
> > fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> > http://lists.freepascal.org/mailman/listinfo/fpc-pascal
> 
> __________________________________
> Do you Yahoo!?
> SBC Yahoo! DSL - Now only $29.95 per month!
> http://sbc.yahoo.com
> 
> _______________________________________________
> fpc-pascal maillist  -  fpc-pascal at lists.freepascal.org
> http://lists.freepascal.org/mailman/listinfo/fpc-pascal

-- 
-
- James Mills
Zero Defect Software Engineers Group - ZDSEG




More information about the fpc-pascal mailing list