From 961e303ff344fa766536491b17bf217efffcd5b3 Mon Sep 17 00:00:00 2001 From: Justin Viiret Date: Mon, 8 Feb 2016 13:32:21 +1100 Subject: [PATCH] SET_GROUPS instr: don't generate more than one --- src/rose/rose_build_bytecode.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/rose/rose_build_bytecode.cpp b/src/rose/rose_build_bytecode.cpp index 81b28197..558603f7 100644 --- a/src/rose/rose_build_bytecode.cpp +++ b/src/rose/rose_build_bytecode.cpp @@ -3269,10 +3269,6 @@ void makeRoleInfixTriggers(RoseBuildImpl &build, build_context &bc, sort(begin(infix_program), end(infix_program)); unique_copy(begin(infix_program), end(infix_program), back_inserter(program)); - - // Groups may be cleared by an infix going quiet. Set groups immediately - // after infixes are triggered. - makeRoleGroups(g[u].groups, program); } static @@ -3373,9 +3369,13 @@ vector makeProgram(RoseBuildImpl &build, build_context &bc, makeRoleReports(build, bc, v, program); makeRoleInfixTriggers(build, bc, v, program); + + // Note: SET_GROUPS instruction must be after infix triggers, as an infix + // going dead may switch off groups. + makeRoleGroups(g[v].groups, program); + makeRoleSuffix(build, bc, v, program); makeRoleSetState(bc, v, program); - makeRoleGroups(g[v].groups, program); return program; }