diff options
-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; } |