Hello. I'm doing massive char* => const char* substitution in server code, and I found two weird things: * in common/readable.c, line 1647: op_name = strtok (formula->arch_name, ","); Trouble: arch_name is set through add_string, and strtok *changes* the string. Given the context it's used only when the 'arch' field of the recipe contains , (recipe given multiple items randomly, i guess?). But this could lead to formulae corruption. * in server/spell_util.c, line 968: int cast_spell(object *op, object *caster,int dir,object *spell_ob, char *stringarg) { The last argument is non NULL value only in server/c_range.c:174 (and plugin code), stringarg being set to point somewhere in the params field given to the command handler. But cast_spell has those lines (1401-1404): if(settings.casting_time == TRUE && stringarg) { free(stringarg); stringarg=NULL; } This imo can lead to very nice crashes when casting has time. Nicolas