MCPcopy Index your code
hub / github.com/cretz/stackparam / write_class

Function write_class

src/manip.rs:77–89  ·  view source on GitHub ↗
(jvmti_env: *mut jvmtiEnv,
                      class_file: &Classfile,
                      new_class_data_len: *mut jint,
                      new_class_data: *mut *mut c_uchar)

Source from the content-addressed store, hash-verified

75}
76
77unsafe fn write_class(jvmti_env: *mut jvmtiEnv,
78 class_file: &Classfile,
79 new_class_data_len: *mut jint,
80 new_class_data: *mut *mut c_uchar) -> Result<(), String> {
81 let mut new_class_curs = Cursor::new(Vec::new());
82 str_err(ClassWriter::new(&mut new_class_curs).write_class(&class_file))?;
83 let new_class_vec: &Vec<u8> = new_class_curs.get_ref();
84 ptr::write(new_class_data_len, new_class_vec.len() as jint);
85 let alloc_res = (**jvmti_env).Allocate.unwrap()(jvmti_env, new_class_vec.len() as jlong, new_class_data);
86 util::unit_or_jvmti_err(alloc_res)?;
87 ptr::copy_nonoverlapping(new_class_vec.as_ptr(), *new_class_data, new_class_vec.len());
88 return Result::Ok(());
89}
90
91unsafe fn add_param_info_field(class_file: &mut Classfile) {
92 let field_name_idx = ConstantPoolIndex { idx: utf8_const(class_file, "paramInfo") };

Callers 2

manip_throwable_classFunction · 0.85
manip_element_classFunction · 0.85

Calls 4

str_errFunction · 0.85
unit_or_jvmti_errFunction · 0.85
write_classMethod · 0.80
lenMethod · 0.80

Tested by

no test coverage detected