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

Function get_stack_trace_field

src/native.rs:256–274  ·  view source on GitHub ↗
(jni_env: *mut JNIEnv)

Source from the content-addressed store, hash-verified

254}
255
256unsafe fn get_stack_trace_field(jni_env: *mut JNIEnv) -> Result<jfieldID, String> {
257 static mut STACK_TRACE_FIELD: jfieldID = 0 as jfieldID;
258 static ONCE: Once = ONCE_INIT;
259 ONCE.call_once(|| {
260 let throwable_class = get_throwable_class(jni_env).unwrap_or(ptr::null_mut());
261 if !throwable_class.is_null() {
262 // We swallow exceptions in here on purpose
263 let field_name_str = CString::new("stackTrace").unwrap();
264 let field_sig_str = CString::new("[Ljava/lang/StackTraceElement;").unwrap();
265 STACK_TRACE_FIELD = (**jni_env).GetFieldID.unwrap()(jni_env,
266 throwable_class,
267 field_name_str.as_ptr(),
268 field_sig_str.as_ptr());
269 let _ = util::result_or_jni_ex((), jni_env);
270 }
271 });
272 if STACK_TRACE_FIELD.is_null() { return Result::Err("No stackTrace field".to_string()); }
273 return Result::Ok(STACK_TRACE_FIELD);
274}
275
276unsafe fn populate_stack_params(jni_env: *mut JNIEnv, this: jobject, thread: jthread) -> Result<(), String> {
277 // Grab the depth we want

Callers 1

populate_trace_elementsFunction · 0.85

Calls 2

get_throwable_classFunction · 0.85
result_or_jni_exFunction · 0.85

Tested by

no test coverage detected