MCPcopy Create free account
hub / github.com/cretz/stackparam / populate_trace_elements

Function populate_trace_elements

src/native.rs:159–183  ·  view source on GitHub ↗
(jni_env: *mut JNIEnv, this: jobject)

Source from the content-addressed store, hash-verified

157}
158
159unsafe fn populate_trace_elements(jni_env: *mut JNIEnv, this: jobject) -> Result<jobject, String> {
160 // We will fill the stack trace field if it has changed and it's
161 // a non-null array with length greater than 0.
162
163 // Grab the field value
164 let field_val = util::result_or_jni_ex((**jni_env).GetObjectField.unwrap()(jni_env,
165 this,
166 get_stack_trace_field(jni_env)?), jni_env)?;
167 // Defer to original method
168 let ret = get_our_trace_orig(jni_env, this)?;
169
170 // Is the field value the same or did we get null back?
171 if ret.is_null() || ret == field_val {
172 return Result::Ok(ret);
173 }
174
175 // Is the result array size over 0?
176 let ret_len = util::result_or_jni_ex((**jni_env).GetArrayLength.unwrap()(jni_env, ret), jni_env)?;
177 if ret_len == 0 {
178 return Result::Ok(ret);
179 }
180
181 add_element_params(jni_env, this, ret, ret_len)?;
182 return Result::Ok(ret);
183}
184
185unsafe fn add_element_params(jni_env: *mut JNIEnv, this: jobject, elems: jobjectArray, elems_len: jsize) -> Result<(), String> {
186 let params = util::result_or_jni_ex((**jni_env).GetObjectField.unwrap()(jni_env,

Calls 4

result_or_jni_exFunction · 0.85
get_stack_trace_fieldFunction · 0.85
get_our_trace_origFunction · 0.85
add_element_paramsFunction · 0.85

Tested by

no test coverage detected