merge of b305fe132f91c44a41a877a48efc3bdfda785b73
     and c4704f02db5f42d7bcdb2feafc6199d7ac132da3
diff --git a/libdwfl/elf-from-memory.c b/libdwfl/elf-from-memory.c
index 90a0c4d..2a17475 100644
--- a/libdwfl/elf-from-memory.c
+++ b/libdwfl/elf-from-memory.c
@@ -1,5 +1,5 @@
 /* Reconstruct an ELF file by reading the segments out of remote memory.
-   Copyright (C) 2005 Red Hat, Inc.
+   Copyright (C) 2005, 2006 Red Hat, Inc.
    This file is part of Red Hat elfutils.
 
    Red Hat elfutils is free software; you can redistribute it and/or modify
@@ -338,7 +338,7 @@
       xlatefrom.d_size = xlateto.d_size = sizeof ehdr.e64;
       xlatefrom.d_buf = &ehdr.e64;
       xlateto.d_buf = buffer;
-      if (elf32_xlatetof (&xlateto, &xlatefrom,
+      if (elf64_xlatetof (&xlateto, &xlatefrom,
 			  ehdr.e64.e_ident[EI_DATA]) == NULL)
 	goto libelf_error;
       break;
@@ -354,7 +354,7 @@
   if (elf == NULL)
     {
       free (buffer);
-      return NULL;
+      goto libelf_error;
     }
 
   elf->flags |= ELF_F_MALLOCED;