am a0b320a6: Merge "Remove possible leak when exception occurred."

* commit 'a0b320a66f6467107edac57f3f41471d9d550507':
  Remove possible leak when exception occurred.
This commit is contained in:
Elliott Hughes
2013-08-09 15:02:10 -07:00
committed by Android Git Automerger

View File

@@ -35,6 +35,7 @@
#include <cutils/sockets.h> #include <cutils/sockets.h>
#include <netinet/tcp.h> #include <netinet/tcp.h>
#include <ScopedUtfChars.h>
namespace android { namespace android {
@@ -72,25 +73,22 @@ socket_connect_local(JNIEnv *env, jobject object,
jobject fileDescriptor, jstring name, jint namespaceId) jobject fileDescriptor, jstring name, jint namespaceId)
{ {
int ret; int ret;
const char *nameUtf8;
int fd; int fd;
nameUtf8 = env->GetStringUTFChars(name, NULL);
fd = jniGetFDFromFileDescriptor(env, fileDescriptor); fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
if (env->ExceptionOccurred() != NULL) { if (env->ExceptionOccurred() != NULL) {
return; return;
} }
ScopedUtfChars nameUtf8(env, name);
ret = socket_local_client_connect( ret = socket_local_client_connect(
fd, fd,
nameUtf8, nameUtf8.c_str(),
namespaceId, namespaceId,
SOCK_STREAM); SOCK_STREAM);
env->ReleaseStringUTFChars(name, nameUtf8);
if (ret < 0) { if (ret < 0) {
jniThrowIOException(env, errno); jniThrowIOException(env, errno);
return; return;
@@ -109,11 +107,10 @@ socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor,
{ {
int ret; int ret;
int fd; int fd;
const char *nameUtf8;
if (name == NULL) { if (name == NULL) {
jniThrowNullPointerException(env, NULL); jniThrowNullPointerException(env, NULL);
return;
} }
fd = jniGetFDFromFileDescriptor(env, fileDescriptor); fd = jniGetFDFromFileDescriptor(env, fileDescriptor);
@@ -122,11 +119,9 @@ socket_bind_local (JNIEnv *env, jobject object, jobject fileDescriptor,
return; return;
} }
nameUtf8 = env->GetStringUTFChars(name, NULL); ScopedUtfChars nameUtf8(env, name);
ret = socket_local_server_bind(fd, nameUtf8, namespaceId); ret = socket_local_server_bind(fd, nameUtf8.c_str(), namespaceId);
env->ReleaseStringUTFChars(name, nameUtf8);
if (ret < 0) { if (ret < 0) {
jniThrowIOException(env, errno); jniThrowIOException(env, errno);
@@ -497,6 +492,7 @@ static int socket_process_cmsg(JNIEnv *env, jobject thisJ, struct msghdr * pMsg)
if (count < 0) { if (count < 0) {
jniThrowException(env, "java/io/IOException", jniThrowException(env, "java/io/IOException",
"invalid cmsg length"); "invalid cmsg length");
return -1;
} }
fdArray = env->NewObjectArray(count, class_FileDescriptor, NULL); fdArray = env->NewObjectArray(count, class_FileDescriptor, NULL);