Merge "Remove possible leak when exception occurred."
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user