From cd2715dc953257261113f904eab93695fa778d26 Mon Sep 17 00:00:00 2001 From: Khairul Kasmiran Date: Mon, 30 Mar 2020 22:16:37 +0800 Subject: [PATCH] Fix interaction of ob with o: --- libr/core/cmd_open.c | 20 ++++++++++++++------ test/new/db/cmd/cmd_open | 13 ++++++++++++- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/libr/core/cmd_open.c b/libr/core/cmd_open.c index 24480f3ad4..8963adfe80 100644 --- a/libr/core/cmd_open.c +++ b/libr/core/cmd_open.c @@ -1604,16 +1604,24 @@ static int cmd_open(void *data, const char *input) { if (len < 1) { len = core->blocksize; } - char *uri = r_str_newf ("malloc://%d", len); + char *uri = r_str_newf ("malloc://%d", len); ut8 *data = calloc (len, 1); r_io_read_at (core->io, core->offset, data, len); - RIODesc *fd = r_io_open (core->io, uri, R_PERM_R | R_PERM_W, 0); - if (fd) { - r_io_desc_write (fd, data, len); - } + if (file = r_core_file_open (core, uri, R_PERM_RWX, 0)) { + fd = file->fd; + core->num->value = fd; + r_core_bin_load (core, uri, 0); + RIODesc *desc = r_io_desc_get (core->io, fd); + if (desc) { + // TODO: why r_io_desc_write() fails? + r_io_desc_write_at (desc, 0, data, len); + } + } else { + eprintf ("Cannot %s\n", uri); + } free (uri); free (data); - } + } break; case 'm': // "om" cmd_open_map (core, input); diff --git a/test/new/db/cmd/cmd_open b/test/new/db/cmd/cmd_open index 8c741a03bc..5d0b4d9cfb 100644 --- a/test/new/db/cmd/cmd_open +++ b/test/new/db/cmd/cmd_open @@ -305,13 +305,24 @@ EXPECT=<