From owner-svn-src-user@FreeBSD.ORG Sun Feb 26 18:42:08 2012 Return-Path: Delivered-To: svn-src-user@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 224CE1065673; Sun, 26 Feb 2012 18:42:08 +0000 (UTC) (envelope-from gabor@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 036BA8FC21; Sun, 26 Feb 2012 18:42:08 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.4/8.14.4) with ESMTP id q1QIg7gx077977; Sun, 26 Feb 2012 18:42:07 GMT (envelope-from gabor@svn.freebsd.org) Received: (from gabor@localhost) by svn.freebsd.org (8.14.4/8.14.4/Submit) id q1QIg75A077975; Sun, 26 Feb 2012 18:42:07 GMT (envelope-from gabor@svn.freebsd.org) Message-Id: <201202261842.q1QIg75A077975@svn.freebsd.org> From: Gabor Kovesdan Date: Sun, 26 Feb 2012 18:42:07 +0000 (UTC) To: src-committers@freebsd.org, svn-src-user@freebsd.org X-SVN-Group: user MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r232188 - user/gabor/tre-integration/contrib/tre/lib X-BeenThere: svn-src-user@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "SVN commit messages for the experimental " user" src tree" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 26 Feb 2012 18:42:08 -0000 Author: gabor Date: Sun Feb 26 18:42:07 2012 New Revision: 232188 URL: http://svn.freebsd.org/changeset/base/232188 Log: - Fix memory leaks - More consistent variable naming Modified: user/gabor/tre-integration/contrib/tre/lib/mregcomp.c Modified: user/gabor/tre-integration/contrib/tre/lib/mregcomp.c ============================================================================== --- user/gabor/tre-integration/contrib/tre/lib/mregcomp.c Sun Feb 26 17:39:46 2012 (r232187) +++ user/gabor/tre-integration/contrib/tre/lib/mregcomp.c Sun Feb 26 18:42:07 2012 (r232188) @@ -73,7 +73,7 @@ tre_mcompile(mregex_t *preg, size_t nr, ret = tre_compile(&preg->patterns[i], wregex[i], wn[i], regex[i], n[i], cflags); if (ret != REG_OK) - return ret; + goto err; } /* If not literal, check if any of them have fixed-length prefix. */ @@ -167,21 +167,27 @@ tre_mregncomp(mregex_t *preg, size_t nr, return REG_ESPACE; wlen = xmalloc(nr * sizeof(size_t)); if (!wlen) - return REG_ESPACE; + goto err; for (i = 0; i < nr; i++) { ret = tre_convert_pattern_to_wcs(regex[i], n[i], &wregex[i], &wlen[i]); if (ret != REG_OK) - goto fail; + goto err; } wr = (const wchar_t **)wregex; ret = tre_mcompile(preg, nr, wr, wlen, regex, n, cflags); -fail: - for (int j = 0; j < i; j++) - tre_free_wcs_pattern(wregex[j]); +err: + if (wregex) + { + for (int j = 0; j < i; j++) + if (wregex[j]) + tre_free_wcs_pattern(wregex[j]); + } + if (wlen) + xfree(wlen); return ret; } @@ -189,17 +195,17 @@ int tre_mregcomp(mregex_t *preg, size_t nr, const char **regex, int cflags) { int ret; - size_t *wlen; + size_t *len; - wlen = xmalloc(nr * sizeof(size_t)); - if (!wlen) + len = xmalloc(nr * sizeof(size_t)); + if (!len) return REG_ESPACE; for (int i = 0; i < nr; i++) - wlen[i] = strlen(regex[i]); + len[i] = strlen(regex[i]); - ret = tre_mregncomp(preg, nr, regex, wlen, cflags); - xfree(wlen); + ret = tre_mregncomp(preg, nr, regex, len, cflags); + xfree(len); return ret; } @@ -219,21 +225,27 @@ tre_mregwncomp(mregex_t *preg, size_t nr return REG_ESPACE; slen = xmalloc(nr * sizeof(size_t)); if (!slen) - return REG_ESPACE; + goto err; for (i = 0; i < nr; i++) { ret = tre_convert_pattern_to_mbs(regex[i], n[i], &sregex[i], &slen[i]); if (ret != REG_OK) - goto fail; + goto err; } sr = (const char **)sregex; ret = tre_mcompile(preg, nr, regex, n, sr, slen, cflags); -fail: - for (int j = 0; j < i; j++) - tre_free_mbs_pattern(sregex[j]); +err: + if (sregex) + { + for (int j = 0; j < i; j++) + if (sregex[j]) + tre_free_mbs_pattern(sregex[j]); + } + if (slen) + xfree(slen); return ret; } @@ -242,17 +254,17 @@ tre_mregwcomp(mregex_t *preg, size_t nr, int cflags) { int ret; - size_t *wlen; + size_t *len; - wlen = xmalloc(nr * sizeof(size_t)); - if (!wlen) + len = xmalloc(nr * sizeof(size_t)); + if (!len) return REG_ESPACE; for (int i = 0; i < nr; i++) - wlen[i] = tre_strlen(regex[i]); + len[i] = tre_strlen(regex[i]); - ret = tre_mregwncomp(preg, nr, regex, wlen, cflags); - xfree(wlen); + ret = tre_mregwncomp(preg, nr, regex, len, cflags); + xfree(len); return ret; } #endif /* TRE_WCHAR */