Fix AttachCurrentThread to use the right thread group.

Change-Id: I9818845c005563d894a571edc4f9be9862312380
diff --git a/src/jni_internal.cc b/src/jni_internal.cc
index dbee18b..f0943a7 100644
--- a/src/jni_internal.cc
+++ b/src/jni_internal.cc
@@ -485,12 +485,12 @@
   return buffer_class;
 }
 
-static jint JII_AttachCurrentThread(JavaVM* vm, JNIEnv** p_env, void* thr_args, bool as_daemon) {
+static jint JII_AttachCurrentThread(JavaVM* vm, JNIEnv** p_env, void* raw_args, bool as_daemon) {
   if (vm == NULL || p_env == NULL) {
     return JNI_ERR;
   }
 
-  // Return immediately if we're already one with the VM.
+  // Return immediately if we're already attached.
   Thread* self = Thread::Current();
   if (self != NULL) {
     *p_env = self->GetJniEnv();
@@ -505,26 +505,16 @@
     return JNI_ERR;
   }
 
-  JavaVMAttachArgs* in_args = static_cast<JavaVMAttachArgs*>(thr_args);
-  JavaVMAttachArgs args;
-  if (thr_args == NULL) {
-    // Allow the v1.1 calling convention.
-    args.version = JNI_VERSION_1_2;
-    args.name = NULL;
-    args.group = NULL; // TODO: get "main" thread group
-  } else {
-    args.version = in_args->version;
-    args.name = in_args->name;
-    if (in_args->group != NULL) {
-      UNIMPLEMENTED(WARNING) << "thr_args->group != NULL";
-      args.group = NULL; // TODO: decode in_args->group
-    } else {
-      args.group = NULL; // TODO: get "main" thread group
-    }
+  JavaVMAttachArgs* args = static_cast<JavaVMAttachArgs*>(raw_args);
+  const char* thread_name = NULL;
+  Object* thread_group = NULL;
+  if (args != NULL) {
+    CHECK_GE(args->version, JNI_VERSION_1_2);
+    thread_name = args->name;
+    thread_group = static_cast<Thread*>(NULL)->DecodeJObject(args->group);
   }
-  CHECK_GE(args.version, JNI_VERSION_1_2);
 
-  runtime->AttachCurrentThread(args.name, as_daemon);
+  runtime->AttachCurrentThread(thread_name, as_daemon, thread_group);
   *p_env = Thread::Current()->GetJniEnv();
   return JNI_OK;
 }