Merge "Remove possible leak when exception occurred."

This commit is contained in:
Elliott Hughes
2013-08-09 21:58:37 +00:00
committed by Gerrit Code Review

View File

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