[SLOF] [PATCH] instance: Fix set-my-args for empty arguments

Segher Boessenkool segher at kernel.crashing.org
Thu Jun 9 02:36:23 AEST 2016


On Wed, Jun 08, 2016 at 06:02:54PM +0200, Thomas Huth wrote:
> > diff --git a/slof/fs/instance.fs b/slof/fs/instance.fs
> > index 9e5c921..225a2bf 100644
> > --- a/slof/fs/instance.fs
> > +++ b/slof/fs/instance.fs
> > @@ -134,7 +134,7 @@ CONSTANT <instancevariable>
> >        2dup my-self instance>args 2!   \ | write into instance struct  ( old-addr len new-addr )
> >        swap move                       \ | and copy the args           ( )
> >     ELSE                               \ ELSE                          ( old-addr len )
> > -      my-self instance>args 2!        \ | set new args to zero, too   ( )
> > +      swap my-self instance>args 2!   \ | set new args to zero, too   ( )
> >     THEN                               \ FI
> >  ;
> 
> You're right, the old code stored the address and length in the wrong
> order into instance>args and instance>args-len. However, the code likely
> simply expected to write zeros to both fields instead, so maybe it is
> better to do this instead:
> 
> 	nip 0 my-self instance>args 2!
> 
> ... that way you'd make sure that instance>args never contains a bogus
> pointer if instance>args-len is 0.

Why treat a length of zero special at all?  alloc-mem already knows how
to handle it (it returns 0 for the address).


Segher


More information about the SLOF mailing list