From 15ff90059f6439318e692571c886372ac025b818 Mon Sep 17 00:00:00 2001 From: pancake Date: Wed, 27 Jun 2018 00:24:31 +0200 Subject: [PATCH] Fix #10500 - oo reopens without debugger --- libr/bin/open.c | 2 +- libr/core/cmd_open.c | 16 +++++++++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) diff --git a/libr/bin/open.c b/libr/bin/open.c index 746dfb1e17..36e76cf427 100644 --- a/libr/bin/open.c +++ b/libr/bin/open.c @@ -28,7 +28,7 @@ R_API int r_bin_open(RBin *bin, const char *filename, RBinOptions *bo) { rawstr = bo->rawstr; } if (r_bin_load (bin, filename, baddr, laddr, xtr_idx, iofd, rawstr)) { - int id = bin->cur->id; + int id = bin->cur->id; // TODO rename to bd? r_id_storage_set (bin->ids, bin->cur, id); return id; } diff --git a/libr/core/cmd_open.c b/libr/core/cmd_open.c index 818887bae8..dae0da2b29 100644 --- a/libr/core/cmd_open.c +++ b/libr/core/cmd_open.c @@ -1440,7 +1440,21 @@ static int cmd_open(void *data, const char *input) { } else { fd = core->io->desc->fd; } - r_io_reopen (core->io, fd, R_IO_READ, 644); + if (r_config_get_i (core->config, "cfg.debug")) { + RBinFile *bf = r_core_bin_cur (core); + if (bf && r_file_exists (bf->file)) { + char *file = strdup (bf->file); + r_core_cmd0 (core, "ob-*"); + r_io_close_all (core->io); + r_config_set (core->config, "cfg.debug", "false"); + r_core_cmdf (core, "o %s", file); + free (file); + } else { + eprintf ("Nothing to do.\n"); + } + } else { + r_io_reopen (core->io, fd, R_IO_READ, 644); + } } break; case '?':