Commit 08e6b875c11e71b27154d4fb0d36d56ac40aba33

David Calavera 2015-03-19T14:57:15

Return an error when ssh memory credentials are not supported. To not modify the external api.

diff --git a/include/git2/transport.h b/include/git2/transport.h
index 57293d9..4008615 100644
--- a/include/git2/transport.h
+++ b/include/git2/transport.h
@@ -299,7 +299,6 @@ GIT_EXTERN(int) git_cred_default_new(git_cred **out);
  */
 GIT_EXTERN(int) git_cred_username_new(git_cred **cred, const char *username);
 
-#ifdef GIT_SSH_MEMORY_CREDENTIALS
 /**
  * Create a new ssh key credential object reading the keys from memory.
  *
@@ -316,7 +315,6 @@ GIT_EXTERN(int) git_cred_ssh_key_memory_new(
 	const char *publickey,
 	const char *privatekey,
 	const char *passphrase);
-#endif
 
 /**
  * Signature of a function which acquires a credential object.
diff --git a/src/transports/cred.c b/src/transports/cred.c
index 68007fb..c1f305d 100644
--- a/src/transports/cred.c
+++ b/src/transports/cred.c
@@ -195,7 +195,6 @@ int git_cred_ssh_key_new(
 		GIT_CREDTYPE_SSH_KEY);
 }
 
-#ifdef GIT_SSH_MEMORY_CREDENTIALS
 int git_cred_ssh_key_memory_new(
 	git_cred **cred,
 	const char *username,
@@ -203,6 +202,7 @@ int git_cred_ssh_key_memory_new(
 	const char *privatekey,
 	const char *passphrase)
 {
+#ifdef GIT_SSH_MEMORY_CREDENTIALS
 	return git_cred_ssh_key_type_new(
 		cred,
 		username,
@@ -210,8 +210,12 @@ int git_cred_ssh_key_memory_new(
 		privatekey,
 		passphrase,
 		GIT_CREDTYPE_SSH_MEMORY);
-}
+#else
+	giterr_set(GITERR_INVALID,
+		"This version of libgit2 was not built with ssh memory credentials.");
+	return -1;
 #endif
+}
 
 static int git_cred_ssh_key_type_new(
 	git_cred **cred,