diff options
-rw-r--r-- | overlay/mgdb/gdb/winnt-nat.c | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/overlay/mgdb/gdb/winnt-nat.c b/overlay/mgdb/gdb/winnt-nat.c index 80641c2..37ff7bf 100644 --- a/overlay/mgdb/gdb/winnt-nat.c +++ b/overlay/mgdb/gdb/winnt-nat.c @@ -368,13 +368,9 @@ static enum target_xfer_status winnt_xfer_partial( ULONGEST * nxfered) { ssize_t ret; - pid_t pid; struct winnt_process * pidinfo; - pid = inferior_ptid.pid; - - if (!(pidinfo = winnt_process_record(pid))) - winnt_perror("internal error: record not found",pid); + pidinfo = winnt_process_record(inferior_ptid.pid); if (readbuf && writebuf) winnt_error("internal error: both readbuf and writebuf are non-null."); @@ -387,12 +383,18 @@ static enum target_xfer_status winnt_xfer_partial( switch (object) { case TARGET_OBJECT_MEMORY: + if (!pidinfo) + return TARGET_XFER_E_IO; + ret = (readbuf) ? __dbg_vm_read(pidinfo->pfd,readbuf,len,offset) : __dbg_vm_write(pidinfo->pfd,writebuf,len,offset); break; case TARGET_OBJECT_LIBRARIES: + if (!pidinfo) + return TARGET_XFER_E_IO; + ret = winnt_xfer_solibs(pidinfo,readbuf,offset,len); break; |