ok, well one thing i saw that could use a little tweaking in your newly posted
function is a memory leak i see, which is probably why it's trampling into your
users' space and showing by their prompt and in their prefix...
Where this is:
wordtwist.word = str_dup( "" );
wordtwist.name = str_dup( "" );
make sure that before you str_dup those you free_string them first, here's what
happens:
the first time they're initialized in the code, they'll get a set of addresses,
say 1300 and 2300 for instance... after adding words to them and then
completing one round, they may be say... 100 char's long each, ending at 1400
and 2400 respectively... then you set the pointers to the beginning of that
memory space = to str_dup( "" ), which basically puts an empty string into a
new spot of memory, say 3300, and returns that address to wordtwist.word, and
another one at 4300 to wordtwist.name, and the 200 memory spaces that were
allocated to the previous strings are then lost and can't be reused until the
mud process dies and that space is freed to the OS... leaks like that can
inadvertently trample onto other sections of memory...
so anyway, i had a problem like this just a while back, if you go search the
archives for something along the lines of "argument corrupted in transit", and
it was due to a memory leak... try patching that and see if it helps any, if
not we can always explore other options :)
wavewave
Richard Lindsey.