diff options
| author | 2017-01-07 02:07:08 +0000 | |
|---|---|---|
| committer | 2017-01-07 02:07:10 +0000 | |
| commit | d4abdaf8895bf3462c22c635f41b7185b046b5c7 (patch) | |
| tree | ec3e7420f26c2ef5b5ded254c0aeb7106e0b9dd3 /runtime/openjdkjvmti/OpenjdkJvmTi.cc | |
| parent | 0bf5ddc6014ad3d22b570ad0f82e427b17cee01e (diff) | |
| parent | 4196071adf17245c25cd167fac0428f013a58bac (diff) | |
Merge "Make GetErrorName allocate the output buffer."
Diffstat (limited to 'runtime/openjdkjvmti/OpenjdkJvmTi.cc')
| -rw-r--r-- | runtime/openjdkjvmti/OpenjdkJvmTi.cc | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/runtime/openjdkjvmti/OpenjdkJvmTi.cc b/runtime/openjdkjvmti/OpenjdkJvmTi.cc index 175dca2b41..faaeff361d 100644 --- a/runtime/openjdkjvmti/OpenjdkJvmTi.cc +++ b/runtime/openjdkjvmti/OpenjdkJvmTi.cc @@ -1067,8 +1067,15 @@ class JvmtiFunctions { ENSURE_NON_NULL(name_ptr); switch (error) { #define ERROR_CASE(e) case (JVMTI_ERROR_ ## e) : do { \ - *name_ptr = const_cast<char*>("JVMTI_ERROR_"#e); \ - return OK; \ + jvmtiError res = CopyString(env, \ + "JVMTI_ERROR_"#e, \ + reinterpret_cast<unsigned char**>(name_ptr)); \ + if (res != OK) { \ + *name_ptr = nullptr; \ + return res; \ + } else { \ + return OK; \ + } \ } while (false) ERROR_CASE(NONE); ERROR_CASE(INVALID_THREAD); @@ -1120,8 +1127,15 @@ class JvmtiFunctions { ERROR_CASE(INVALID_ENVIRONMENT); #undef ERROR_CASE default: { - *name_ptr = const_cast<char*>("JVMTI_ERROR_UNKNOWN"); - return ERR(ILLEGAL_ARGUMENT); + jvmtiError res = CopyString(env, + "JVMTI_ERROR_UNKNOWN", + reinterpret_cast<unsigned char**>(name_ptr)); + if (res != OK) { + *name_ptr = nullptr; + return res; + } else { + return ERR(ILLEGAL_ARGUMENT); + } } } } |