Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5adfb21e authored by Elliott Hughes's avatar Elliott Hughes Committed by Android Git Automerger
Browse files

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

* commit 'a0b320a6':
  Remove possible leak when exception occurred.
parents 53d86f6e a0b320a6
Loading
Loading
Loading
Loading
+8 −12
Original line number Original line Diff line number Diff line
@@ -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);


    env->ReleaseStringUTFChars(name, nameUtf8);
    ret = socket_local_server_bind(fd, nameUtf8.c_str(), namespaceId);


    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);