Merge "Allow clients of mapMemory to recover."
am: 079afdf499

Change-Id: I5c55fc0ce83c34d89a1284a77628973bc984f8d0
diff --git a/libhidlmemory/include/hidlmemory/mapping.h b/libhidlmemory/include/hidlmemory/mapping.h
index 8ed0d54..5e1dab3 100644
--- a/libhidlmemory/include/hidlmemory/mapping.h
+++ b/libhidlmemory/include/hidlmemory/mapping.h
@@ -19,7 +19,11 @@
 namespace android {
 namespace hardware {
 
+/**
+ * Returns the IMemory instance corresponding to a hidl_memory object.
+ * If the shared memory cannot be fetched, this returns nullptr.
+ */
 sp<android::hidl::memory::V1_0::IMemory> mapMemory(const hidl_memory &memory);
 
 }  // namespace hardware
-}  // namespace android
\ No newline at end of file
+}  // namespace android
diff --git a/libhidlmemory/mapping.cpp b/libhidlmemory/mapping.cpp
index 3761f99..f4bb21e 100644
--- a/libhidlmemory/mapping.cpp
+++ b/libhidlmemory/mapping.cpp
@@ -33,17 +33,20 @@
     sp<IMapper> mapper = IMapper::getService(memory.name(), true /* getStub */);
 
     if (mapper == nullptr) {
-        LOG(FATAL) << "Could not fetch mapper for " << memory.name() << " shared memory";
+        LOG(ERROR) << "Could not fetch mapper for " << memory.name() << " shared memory";
+        return nullptr;
     }
 
     if (mapper->isRemote()) {
-        LOG(FATAL) << "IMapper must be a passthrough service.";
+        LOG(ERROR) << "IMapper must be a passthrough service.";
+        return nullptr;
     }
 
     Return<sp<IMemory>> ret = mapper->mapMemory(memory);
 
     if (!ret.isOk()) {
-        LOG(FATAL) << "hidl_memory map returned transport error.";
+        LOG(ERROR) << "hidl_memory map returned transport error.";
+        return nullptr;
     }
 
     return ret;