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

Commit 52a4fc09 authored by Andy Hung's avatar Andy Hung Committed by Android Git Automerger
Browse files

am 3732a3ac: am ab203130: Merge "Make IEffect command more robust (second try)" into klp-dev

* commit '3732a3ac':
  Make IEffect command more robust (second try)
parents 7d34959b 3732a3ac
Loading
Loading
Loading
Loading
+20 −7
Original line number Diff line number Diff line
@@ -85,13 +85,15 @@ public:
        data.writeInt32(size);

        status_t status = remote()->transact(COMMAND, data, &reply);
        if (status == NO_ERROR) {
            status = reply.readInt32();
        }
        if (status != NO_ERROR) {
            if (pReplySize != NULL)
                *pReplySize = 0;
            return status;
        }

        status = reply.readInt32();
        size = reply.readInt32();
        if (size != 0 && pReplyData != NULL && pReplySize != NULL) {
            reply.read(pReplyData, size);
@@ -155,6 +157,10 @@ status_t BnEffect::onTransact(
            char *cmd = NULL;
            if (cmdSize) {
                cmd = (char *)calloc(cmdSize, 1);
                if (cmd == NULL) {
                    reply->writeInt32(NO_MEMORY);
                    return NO_ERROR;
                }
                data.read(cmd, cmdSize);
            }
            uint32_t replySize = data.readInt32();
@@ -162,9 +168,15 @@ status_t BnEffect::onTransact(
            char *resp = NULL;
            if (replySize) {
                resp = (char *)calloc(replySize, 1);
                if (resp == NULL) {
                    free(cmd);
                    reply->writeInt32(NO_MEMORY);
                    return NO_ERROR;
                }
            }
            status_t status = command(cmdCode, cmdSize, cmd, &replySz, resp);
            reply->writeInt32(status);
            if (status == NO_ERROR) {
                if (replySz < replySize) {
                    replySize = replySz;
                }
@@ -172,6 +184,7 @@ status_t BnEffect::onTransact(
                if (replySize) {
                    reply->write(resp, replySize);
                }
            }
            if (cmd) {
                free(cmd);
            }