diff --git a/JniInvocation.cpp b/JniInvocation.cpp
index f4dd24e..30b1205 100644
--- a/JniInvocation.cpp
+++ b/JniInvocation.cpp
@@ -55,9 +55,11 @@
 #endif
 static const char* kLibraryFallback = "libart.so";
 
-const char* JniInvocation::GetLibrary(const char* library) {
+template<typename T> void UNUSED(const T&) {}
+
+const char* JniInvocation::GetLibrary(const char* library, char* buffer) {
 #ifdef HAVE_ANDROID_OS
-  char default_library[PROPERTY_VALUE_MAX];
+  const char* default_library;
 
   char debuggable[PROPERTY_VALUE_MAX];
   property_get(kDebuggableSystemProperty, debuggable, kDebuggableFallback);
@@ -65,17 +67,24 @@
   if (strcmp(debuggable, "1") != 0) {
     // Not a debuggable build.
     // Do not allow arbitrary library. Ignore the library parameter. This
-    // will also ignore the default library, but initialize to empty string
+    // will also ignore the default library, but initialize to fallback
     // for cleanliness.
     library = kLibraryFallback;
-    default_library[0] = 0;
+    default_library = kLibraryFallback;
   } else {
     // Debuggable build.
     // Accept the library parameter. For the case it is NULL, load the default
     // library from the system property.
-    property_get(kLibrarySystemProperty, default_library, kLibraryFallback);
+    if (buffer != NULL) {
+      property_get(kLibrarySystemProperty, buffer, kLibraryFallback);
+      default_library = buffer;
+    } else {
+      // No buffer given, just use default fallback.
+      default_library = kLibraryFallback;
+    }
   }
 #else
+  UNUSED(buffer);
   const char* default_library = kLibraryFallback;
 #endif
   if (library == NULL) {
@@ -86,7 +95,12 @@
 }
 
 bool JniInvocation::Init(const char* library) {
-  library = GetLibrary(library);
+#ifdef HAVE_ANDROID_OS
+  char buffer[PROPERTY_VALUE_MAX];
+#else
+  char* buffer = NULL;
+#endif
+  library = GetLibrary(library, buffer);
 
   handle_ = dlopen(library, RTLD_NOW);
   if (handle_ == NULL) {
