RBinJavaObj* r_bin_java_new(const char* file) { ut8 *buf; RBinJavaObj *bin = R_NEW0 (RBinJavaObj); bin->file = file; if (!(buf = (ut8*)r_file_slurp (file, &bin->size))) return r_bin_java_free (bin); bin->b = r_buf_new (); if (!r_buf_set_bytes (bin->b, buf, bin->size)) return r_bin_java_free (bin); free (buf); if (!javasm_init (bin)) return r_bin_java_free (bin); return bin; }
R_API RBinJavaObj* r_bin_java_new_buf(RBuffer *buf) { RBinJavaObj *bin = R_NEW0 (RBinJavaObj); if (!bin) return NULL; bin->b = buf; bin->size = buf->length; buf->cur = 0; // rewind if (!javasm_init (bin)) return r_bin_java_free (bin); return bin; }
static int destroy(RBinFile *bf) { r_bin_java_free ((struct r_bin_java_obj_t *) bf->o->bin_obj); sdb_free (DB); DB = NULL; return true; }
static int destroy(RBinArch *arch) { r_bin_java_free ((struct r_bin_java_obj_t*)arch->bin_obj); return R_TRUE; }
static int destroy(RBinFile *arch) { r_bin_java_free ((struct r_bin_java_obj_t*)arch->o->bin_obj); sdb_free (DB); DB = NULL; return R_TRUE; }