# @create problem

Thomas Wouters (zonny@dds.nl)
Sat, 30 Mar 1996 16:18:52 PST

- Messages sorted by:[ date ][ thread ][ subject ][ author ]

    On Sat, 30 Mar 1996, Jeff Kramer wrote:

    > > Sorry to bother the list with this question which is probably pretty
    > > basic.  I've just installed the latest version of LambdaMOO on a Silicon
    > > Graphics machine running Irix.  Everything seems to be working ok except
    > > I can't create any objects.  I get the following error message:
    > >
    > > #90:moveto acceptable (this == #2), line 15:  Invalid indirection
    > >   ...called from #1:accept (this == #2), line 2
    > >   ...called from built-in function move()
    > >   ...called from #4:@create (this == #2), line 41

    Welp, the best solution is to find out what went wrong... I do not use
    the new core so i do not know what object #90 is, or what the moveto
    acceptable says... I can _guess_ what the problem is though -- when
    objects are created they are in #-1, the @create verb tries to move them
    to the creator, and #90:moveto tries either to check a property or
    execute a verb on the objects former location -- which is an invalid
    object (#-1).

    This error, however, does not mean the object is not created ! It merely
    rests in #-1, nameless (the namechange is done _after_ the move) and
    possibly without being put in your .owned_objects list. You should be
    careful with this, you can create a lot of unused objects like this :(

    > Same thing happened to me, except I'm running it on a Sparc-Classic/Solaris
    > 2.  The easy fix is to just do a @chmod -d #90:moveto, and supress the
    > error.  It seems that you have to do that alot to get LambdaCore working.
    > (Much thanks to Quinn for enlightenment.)

    Hm, well, that is the simplest solution, yes, but it is also a bit more
    dangerous... putting  verbs -d means you get no error messages, and the
    verb continues executing... The object was most likely not moved, and
    whats more, you can get a lot of hard to find bugs... For instance, the
    namechange goes wrong and suddenly you end up with an object with name
    #-3 :-) (just an example, i don't think this can happen save due to
    Database corruption :)

    The best solution (IMHO) is to put an if (valid(location)) statement
    around the :moveto/acceptable call, or inside the moveto/acceptable verb
    itself. This need not be complicated at all, simply a sanity check, and
    if you are new to MOO it is excelent practice :)

    Remember, use @list and @display to find the cause of errors, you can
    find out what a given line does with @list, then check on property
    contents and permissions and verb permissions using @display (@d object:
    to see the verbs, @d object. to see the properties)

    Hope this helps a bit,
      Thomas.

    Thomas Wouters   |   Visit The Digitale City (DDS)   | Forever an Addict to
    zonny@moo.dds.nl |    The Dutch Digital Community    | Virtual, Digital,
    Ynnoz @ MOOs     | http://www.dds.nl/plein/centraal/ | Unconventional Rubbish
    Jay_* @ MUS[HE]s |  WWW -- World Wide Wackos :)      | (Except for Windows)