MOO-cows Mailing List Archive

[Prev][Next][Index][Thread]

Patch for LambdaMOO 1.8.0alpha6



The following patch fixes a bug in the 1.8.0alpha6 release of the LambdaMOO
server; the bug can panic the server and lose DB changes.  It is fixed in
1.8.0beta1, which I'll be releasing shortly, but here's the patch in the
meantime.

The bug is in the function decompile() in decompile.c and leads to log entries
like this:
	*** PANIC: WHILE jumps to wrong place in DECOMPILE!

To fix it, find the OP_EIF case and add the line marked below with an arrow:

	  case OP_EIF:
	    {
		unsigned	next = READ_LABEL();
		Expr   	       *condition = pop_expr();
		Stmt	       *arm_stmts;
		Cond_Arm       *arm;
		unsigned	done;
		int		jump_hot;

		DECOMPILE(bc, ptr, bc.vector + next - jump_len, &arm_stmts, 0);
		ADD_ARM(arm = alloc_cond_arm(condition, arm_stmts));
		HOT_OP1(condition, arm);
		done = READ_JUMP(jump_hot);
		HOT_BOTTOM(jump_hot, arm);
		if (bc.vector + done != end)
		    panic("ELSEIF jumps to wrong place in DECOMPILE!");
-->		stmt_start = ptr - bc.vector;
	    }
	    break;

Sorry for the inconvenience,

	Pavel



Home | Subject Index | Thread Index