> I recently decided to start my mud over to update some old stuff and add > some new features. Last time i did this(for another person) I ran into > this same problem. That is: When I do a copyover, it does it and brings > me back to the prompt, but whatever i type in next crashed the mud. As > far as i can remember, the gdb information was of no relevance, but here > it is anyways. <CUT> Some additional information: It crashes because t->last_input and t->history don't exist. They are initialized in the first two if statements, but after the else, it doesn't get set to anything. Soooo: Solution 1: Remove the else part. Causes: ! won't work now but fixes bug. Solution 2: ? Ideas? I did a: if(t->history && t->last_input != NULL) check right after the else which prevents it from crashing and also disables ! from working. For those that don't know...this portion of the code is for when you want to redo the last command. I don't exactly understand the tmp stuff either. tmp is a character, and a pointer? > 1848 } else if (*tmp == '^') { > 1849 if (!(failed_subst = perform_subst(t, t->last_input, tmp))) > 1850 strcpy(t->last_input, tmp); > 1851 } else { > 1852 strcpy(t->last_input, tmp); <---Crash line > 1853 if (t->history[t->history_pos]) > 1854 free(t->history[t->history_pos]); /* Clear the old > line. */ > 1855 t->history[t->history_pos] = str_dup(tmp); /* Save > the new. */ > 1856 if (++t->history_pos >= HISTORY_SIZE) /* Wrap to top. */ > 1857 t->history_pos = 0; -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- | Ryan Guthrie(Sim) | | guthrie@henge.com | |*****CyberMUD Information:*****| | sim@sim.dkserver.dk | | cyber.mud.dk 5000 | -#-#-#-#-#-#-#-#-#-#-#-#-#-#-#-#- +------------------------------------------------------------+ | Ensure that you have read the CircleMUD Mailing List FAQ: | | http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | +------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 12/15/00 PST