2003-06-07 Andrew Cagney <cagney@redhat.com>
[deliverable/binutils-gdb.git] / gdb / windows-nat.c
index 103a3f21bc7ed36cf5110c0cd757e438f6c8f9e7..c6f8f66fd16bcd109f88c2e009cf997a09096e1f 100644 (file)
@@ -635,21 +635,16 @@ get_image_name (HANDLE h, void *address, int unicode)
   if (address == NULL)
     return NULL;
 
-  ReadProcessMemory (h, address,  &address_ptr, sizeof (address_ptr), &done);
-
   /* See if we could read the address of a string, and that the
      address isn't null. */
-
-  if (done != sizeof (address_ptr) || !address_ptr)
+  if (!ReadProcessMemory (h, address,  &address_ptr, sizeof (address_ptr), &done) 
+      || done != sizeof (address_ptr) || !address_ptr)
     return NULL;
 
   /* Find the length of the string */
-  do
-    {
-      ReadProcessMemory (h, address_ptr + len * size, &b, size, &done);
-      len++;
-    }
-  while ((b[0] != 0 || b[size - 1] != 0) && done == size);
+  while (ReadProcessMemory (h, address_ptr + len++ * size, &b, size, &done)
+        && (b[0] != 0 || b[size - 1] != 0) && done == size)
+    continue;
 
   if (!unicode)
     ReadProcessMemory (h, address_ptr, buf, len, &done);
@@ -847,14 +842,17 @@ solib_symbols_add (char *name, int from_tty, CORE_ADDR load_addr)
   else
     {
       /* Fallback on handling just the .text section. */
-      struct section_addr_info section_addrs;
+      struct section_addr_info *section_addrs;
+      struct cleanup *my_cleanups;
 
-      memset (&section_addrs, 0, sizeof (section_addrs));
+      section_addrs = alloc_section_addr_info (1);
+      my_cleanups = make_cleanup (xfree, section_addrs);
       section_addrs.other[0].name = ".text";
       section_addrs.other[0].addr = load_addr;
 
       result = safe_symbol_file_add (name, from_tty, &section_addrs,
                                     0, OBJF_SHARED);
+      do_cleanups (my_cleanups);
     }
 
   return result;
@@ -1863,21 +1861,23 @@ child_xfer_memory (CORE_ADDR memaddr, char *our, int len,
                   int write, struct mem_attrib *mem,
                   struct target_ops *target)
 {
-  DWORD done;
+  DWORD done = 0;
   if (write)
     {
       DEBUG_MEM (("gdb: write target memory, %d bytes at 0x%08lx\n",
                  len, (DWORD) memaddr));
-      WriteProcessMemory (current_process_handle, (LPVOID) memaddr, our,
-                         len, &done);
+      if (!WriteProcessMemory (current_process_handle, (LPVOID) memaddr, our,
+                              len, &done))
+       done = 0;
       FlushInstructionCache (current_process_handle, (LPCVOID) memaddr, len);
     }
   else
     {
       DEBUG_MEM (("gdb: read target memory, %d bytes at 0x%08lx\n",
                  len, (DWORD) memaddr));
-      ReadProcessMemory (current_process_handle, (LPCVOID) memaddr, our, len,
-                        &done);
+      if (!ReadProcessMemory (current_process_handle, (LPCVOID) memaddr, our,
+                             len, &done))
+       done = 0;
     }
   return done;
 }
This page took 0.023891 seconds and 4 git commands to generate.