On Sat, 20 Sep 1997, Sammy wrote:
> On Sat, 20 Sep 1997, Ron Hensley wrote:
>
> > Ive noticed that some speicals code, trash the argument list passed into
> > them. Like if you assign a mob to be a shop keeper and also try to
> > MOB_ASSIGN it, youll see that the shop code obliterates the argument list
> > before your special gets called.
>
> That's not a problem with stock spec_procs. I think what's happening is
> your specials don't have enough checks to determine whether the special
> should act on the arguments before you call the argument functions. Any
> "return 0" in a special that is called after a destructive argument parse
> function is asking for trouble.
I think I have to dissagree with that statement. Got stock code and
unzipped it. Here is the result of:
grep -in "argument = one_argument" *.c
act.item.c:449: argument = one_argument(argument, arg);
act.item.c:457: argument = one_argument(argument, arg);
act.item.c:585: argument = one_argument(argument, arg);
act.item.c:591: argument = one_argument(argument, arg);
act.item.c:593: argument = one_argument(argument, arg);
act.other.c:170: argument = one_argument(argument, obj_name);
modify.c:130: argument = one_argument(argument, name);
modify.c:181: argument = one_argument(argument, buf);
olc.c:106: argument = one_argument(argument, arg);
olc.c:130: argument = one_argument(argument, arg);
olc.c:142: argument = one_argument(argument, arg);
spec_procs.c:632: argument = one_argument(argument, buf);
spec_procs.c:633: argument = one_argument(argument, pet_name);
As one_argument returns a pointer to the argument array, minus the
argument popped off the list by the call itself, anyime you say
argument = one_argument(argument,.....
You have just destroyed the argument list have you not?
I mean you have take the global char *argument that points to the
beginning of the list, and moved it, thus losing the beginning.
As the two from spec_procs show, the pet shop code is one such stock code.
Of course you are correct, many many patches violate this as well such as
all the mob program code.
*******************************************************************
* Ron Hensley ron@dmv.com *
* Network Administrator http://www.dmv.com/~ron *
* PGP Key at WWW Page *
* DelMarVa OnLine 749-7898 Ext. 403 *
*******************************************************************
+------------------------------------------------------------+
| Ensure that you have read the CircleMUD Mailing List FAQ: |
| http://democracy.queensu.ca/~fletcher/Circle/list-faq.html |
+------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/08/00 PST