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