> I'm having a problem with Circle 3.0bpl4 running under Ultrix v4.4 with > gcc 2.5.8. The following seems to work fine under Linux, however, if I > have this code installed on the Ultrix system the MUD core dumps right > after the player connects and enters their name. They don't get a > password prompt. I haven't gotten a chance to look over the core file yet > but thought I'd throw it up here to see if anyone has any quick fixes: The problem, I think, is that you're trying to dereference d->character for all descriptors, even though d->character is NULL for some descriptors. Here is some corrected, untested code. The only change I changed is the place where you've declared rm. > void make_prompt(struct descriptor_data * d) > { > if (d->str) > write_to_descriptor(d->descriptor, "] "); > else if (d->showstr_point) > write_to_descriptor(d->descriptor, > "\r\n*** Press return to continue, q to quit ***"); > else if (!d->connected) { > char prompt[MAX_INPUT_LENGTH]; > struct room_data *rm = &world[d->character->in_room]; > > *prompt = '\0'; > > if (PRF_FLAGGED(d->character, PRF_DISPHP)) > sprintf(prompt, "%s%dhp ", prompt, GET_HIT(d->character)); > > if (PRF_FLAGGED(d->character, PRF_DISPMANA)) > sprintf(prompt, "%s%dma ", prompt, GET_MANA(d->character)); > > if (PRF_FLAGGED(d->character, PRF_DISPMOVE)) > sprintf(prompt, "%s%dmv ", prompt, GET_MOVE(d->character)); > > if (GET_LEVEL(d->character) >= LVL_IMMORT) /* Added 2/10/95 */ > sprintf(prompt, "%s%drm ", prompt, rm->number); > > if (GET_INVIS_LEV(d->character)) > sprintf(prompt, "%si%d ", prompt, GET_INVIS_LEV(d->character)); > > strcat(prompt, "> "); > write_to_descriptor(d->descriptor, prompt); > } > } >
This archive was generated by hypermail 2b30 : 12/07/00 PST