diff --git a/src/java_lang_reflect_Array.cc b/src/java_lang_reflect_Array.cc
index f1456b1..d157282 100644
--- a/src/java_lang_reflect_Array.cc
+++ b/src/java_lang_reflect_Array.cc
@@ -29,13 +29,13 @@
 // Objects or primitive types.
 Array* CreateMultiArray(Class* array_class, int current_dimension, IntArray* dimensions) {
   int32_t array_length = dimensions->Get(current_dimension++);
-  Array* new_array = Array::Alloc(array_class, array_length);
-  if (new_array == NULL) {
+  SirtRef<Array> new_array(Array::Alloc(array_class, array_length));
+  if (new_array.get() == NULL) {
     CHECK(Thread::Current()->IsExceptionPending());
     return NULL;
   }
   if (current_dimension == dimensions->GetLength()) {
-    return new_array;
+    return new_array.get();
   }
 
   if (!array_class->GetComponentType()->IsArrayClass()) {
@@ -53,16 +53,16 @@
   }
   DCHECK(sub_array_class->IsArrayClass());
   // Create a new sub-array in every element of the array.
-  ObjectArray<Array>* object_array = new_array->AsObjectArray<Array>();
+  SirtRef<ObjectArray<Array> > object_array(new_array->AsObjectArray<Array>());
   for (int32_t i = 0; i < array_length; i++) {
-    Array* sub_array = CreateMultiArray(sub_array_class, current_dimension, dimensions);
-    if (sub_array == NULL) {
+    SirtRef<Array> sub_array(CreateMultiArray(sub_array_class, current_dimension, dimensions));
+    if (sub_array.get() == NULL) {
       CHECK(Thread::Current()->IsExceptionPending());
       return NULL;
     }
-    object_array->Set(i, sub_array);
+    object_array->Set(i, sub_array.get());
   }
-  return new_array;
+  return new_array.get();
 }
 
 // Create a multi-dimensional array of Objects or primitive types.
