From e4c1f923b5839888755c242d55a2ab012b710302 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Fri, 18 Nov 2011 08:38:19 -0700 Subject: [PATCH] fix GC safety bug in resolveObjectArrayClass The call to getClassRuntimeData may trigger a GC, so we must mark the local variables to be visited. --- src/machine.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/machine.cpp b/src/machine.cpp index 6f918e7ca6..5084bbcf53 100644 --- a/src/machine.cpp +++ b/src/machine.cpp @@ -3810,6 +3810,9 @@ initClass(Thread* t, object c) object resolveObjectArrayClass(Thread* t, object loader, object elementClass) { + PROTECT(t, loader); + PROTECT(t, elementClass); + { object arrayClass = classRuntimeDataArrayClass (t, getClassRuntimeData(t, elementClass)); if (arrayClass) { @@ -3817,9 +3820,6 @@ resolveObjectArrayClass(Thread* t, object loader, object elementClass) } } - PROTECT(t, loader); - PROTECT(t, elementClass); - object elementSpec = className(t, elementClass); PROTECT(t, elementSpec);