diff options
author | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2013-03-11 13:19:30 +0100 |
---|---|---|
committer | Benjamin Franzke <benjaminfranzke@googlemail.com> | 2013-03-11 13:19:30 +0100 |
commit | e53256be9125cdb9b354a59124ff6d6fb3c8227a (patch) | |
tree | 45f75234ac6937490124c7a474f6599b6a09683f | |
parent | d26eebdbd33c7cf7e3f12c02b6794c815fe774cc (diff) | |
download | econ-e53256be9125cdb9b354a59124ff6d6fb3c8227a.tar.gz econ-e53256be9125cdb9b354a59124ff6d6fb3c8227a.tar.bz2 econ-e53256be9125cdb9b354a59124ff6d6fb3c8227a.zip |
econproxy: Use free_iov on error in framebuffer update
-rw-r--r-- | econproxy.c | 18 |
1 files changed, 6 insertions, 12 deletions
diff --git a/econproxy.c b/econproxy.c index cca75ec..e3a68c3 100644 --- a/econproxy.c +++ b/econproxy.c @@ -416,8 +416,11 @@ free_iov(struct iovec *iov, int iovcnt, int members_only) { int i; - for (i = 0; i < iovcnt; ++i) + for (i = 0; i < iovcnt; ++i) { + if (iov[i].iov_base == NULL) + break; free(iov[i].iov_base); + } if (!members_only) free(iov); } @@ -563,17 +566,8 @@ rfb_retrieve_framebuffer_update(struct ep *ep, return 0; err: - { - int n = 1 + framebuffer_update->nrects * 2; - - iov--; - for (i = 0; i < n; ++i) { - if (iov[n].iov_base == NULL) - break; - free(iov[i].iov_base); - } - free(iov); - } + free_iov(--iov, 1 + framebuffer_update->nrects * 2, 0); + return -1; } |