Complete.Org: Mailing Lists: Archives: freeciv-dev: September 2000:
[Freeciv-Dev] Re: TODO
Home

[Freeciv-Dev] Re: TODO

[Top] [All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index] [Thread Index]
To: Jules Bean <jules@xxxxxxxxxxxxxxxxxxxxxxxxx>
Cc: Erik Sigra <freeciv@xxxxxxx>, freeciv-dev@xxxxxxxxxxx
Subject: [Freeciv-Dev] Re: TODO
From: Raimar Falke <hawk@xxxxxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 22 Sep 2000 14:53:15 +0200
Reply-to: rf13@xxxxxxxxxxxxxxxxxxxxxxxx

On Fri, Sep 22, 2000 at 11:49:19AM +0100, Jules Bean wrote:
> On Fri, Sep 22, 2000 at 12:45:45PM +0200, Raimar Falke wrote:
> > On Fri, Sep 22, 2000 at 10:56:58AM +0100, Jules Bean wrote:
> > > Instead use a 'constructor' function
> > > 
> > > struct locus make_locus(int x,int y) {
> > >   struct locus l;
> > >   l.x=x; l.y=y;
> > >   return l;
> > > }
> > 
> > AFAIK this is wrong. The variable l is created on the stack which is
> > destroyed at the return. You have to do return a newly allocated part of
> > memory. Using this you will get some problems with bookkeeping since C has
> > no GC.
> 
> Nope.
> 
> The above will make another copy of 'l' and return that.

Till now I thought returning structures in C was an extension of gcc. It
looks like this was a false assumption. Is it possible that this construct
wasn't allowed in 1993?

Thanks for clarification.

        Raimar

-- 
 email: rf13@xxxxxxxxxxxxxxxxx
 "Many of my assistants were fans of Tolkien, who wrote 'Lord of the Rings'
  and a number of other children's stories for adults.  The first character
  alphabet that was programmed for my plotter was Elvish rather than Latin."
    -- from SAIs "life as a computer for a quarter of a century"



[Prev in Thread] Current Thread [Next in Thread]