diff --git a/core/jni/android_util_jar_StrictJarFile.cpp b/core/jni/android_util_jar_StrictJarFile.cpp
index 182a621..a26707e 100644
--- a/core/jni/android_util_jar_StrictJarFile.cpp
+++ b/core/jni/android_util_jar_StrictJarFile.cpp
@@ -146,7 +146,7 @@
 
   ZipEntry data;
   const int32_t error = FindEntry(reinterpret_cast<ZipArchiveHandle>(nativeHandle),
-                                  ZipString(entryNameChars.c_str()), &data);
+                                  entryNameChars.c_str(), &data);
   if (error) {
     return NULL;
   }
diff --git a/libs/androidfw/ApkAssets.cpp b/libs/androidfw/ApkAssets.cpp
index 66a5477..47b7d64 100644
--- a/libs/androidfw/ApkAssets.cpp
+++ b/libs/androidfw/ApkAssets.cpp
@@ -120,9 +120,8 @@
   std::unique_ptr<ApkAssets> loaded_apk(new ApkAssets(unmanaged_handle, path));
 
   // Find the resource table.
-  ::ZipString entry_name(kResourcesArsc.c_str());
   ::ZipEntry entry;
-  result = ::FindEntry(loaded_apk->zip_handle_.get(), entry_name, &entry);
+  result = ::FindEntry(loaded_apk->zip_handle_.get(), kResourcesArsc, &entry);
   if (result != 0) {
     // There is no resources.arsc, so create an empty LoadedArsc and return.
     loaded_apk->loaded_arsc_ = LoadedArsc::CreateEmpty();
@@ -160,9 +159,8 @@
 std::unique_ptr<Asset> ApkAssets::Open(const std::string& path, Asset::AccessMode mode) const {
   CHECK(zip_handle_ != nullptr);
 
-  ::ZipString name(path.c_str());
   ::ZipEntry entry;
-  int32_t result = ::FindEntry(zip_handle_.get(), name, &entry);
+  int32_t result = ::FindEntry(zip_handle_.get(), path, &entry);
   if (result != 0) {
     return {};
   }
diff --git a/libs/androidfw/ZipFileRO.cpp b/libs/androidfw/ZipFileRO.cpp
index 6e2ca60c..44614c1 100644
--- a/libs/androidfw/ZipFileRO.cpp
+++ b/libs/androidfw/ZipFileRO.cpp
@@ -98,7 +98,7 @@
 
     data->name = ZipString(entryName);
 
-    const int32_t error = FindEntry(mHandle, data->name, &(data->entry));
+    const int32_t error = FindEntry(mHandle, entryName, &(data->entry));
     if (error) {
         delete data;
         return NULL;
diff --git a/libs/androidfw/tests/TestHelpers.cpp b/libs/androidfw/tests/TestHelpers.cpp
index 9e320a2..a81bb6f 100644
--- a/libs/androidfw/tests/TestHelpers.cpp
+++ b/libs/androidfw/tests/TestHelpers.cpp
@@ -34,9 +34,8 @@
                               << "': " << ::ErrorCodeString(result);
   }
 
-  ::ZipString name(file.c_str());
   ::ZipEntry entry;
-  result = ::FindEntry(handle, name, &entry);
+  result = ::FindEntry(handle, file.c_str(), &entry);
   if (result != 0) {
     ::CloseArchive(handle);
     return AssertionFailure() << "Could not find file '" << file << "' in zip '" << zip_path
