Author: pfg
Date: Mon Jul 21 23:00:26 2014
New Revision: 268967
URL: http://svnweb.freebsd.org/changeset/base/268967

Log:
  MFC   r268798, r268799, r268801:
  grep: Fix type.
  grep: fix some memory leaks.
  
  queue.c (CVS Rev. 1.4. 1.5)
  Fix memory leaks.
  NULL does not need a cast.
  
  grep.c (CVS Rev. 1.6)
  Use the more portable getline.
  
  Obtained from:        NetBSD

Modified:
  stable/9/usr.bin/grep/grep.c
  stable/9/usr.bin/grep/queue.c
  stable/9/usr.bin/grep/util.c
Directory Properties:
  stable/9/usr.bin/grep/   (props changed)

Modified: stable/9/usr.bin/grep/grep.c
==============================================================================
--- stable/9/usr.bin/grep/grep.c        Mon Jul 21 22:59:40 2014        
(r268966)
+++ stable/9/usr.bin/grep/grep.c        Mon Jul 21 23:00:26 2014        
(r268967)
@@ -1,4 +1,4 @@
-/*     $NetBSD: grep.c,v 1.4 2011/02/16 01:31:33 joerg Exp $   */
+/*     $NetBSD: grep.c,v 1.6 2011/04/18 03:48:23 joerg Exp $   */
 /*     $FreeBSD$       */
 /*     $OpenBSD: grep.c,v 1.42 2010/07/02 22:18:03 tedu Exp $  */
 
@@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
 #include <libgen.h>
 #include <locale.h>
 #include <stdbool.h>
+#define _WITH_GETLINE
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -303,6 +304,7 @@ read_patterns(const char *fn)
        FILE *f;
        char *line;
        size_t len;
+       ssize_t rlen;
 
        if ((f = fopen(fn, "r")) == NULL)
                err(2, "%s", fn);
@@ -310,8 +312,11 @@ read_patterns(const char *fn)
                fclose(f);
                return;
        }
-       while ((line = fgetln(f, &len)) != NULL)
+       len = 0;
+       line = NULL;
+       while ((rlen = getline(&line, &len, f)) != -1)
                add_pattern(line, line[0] == '\n' ? 0 : len);
+       free(line);
        if (ferror(f))
                err(2, "%s", fn);
        fclose(f);

Modified: stable/9/usr.bin/grep/queue.c
==============================================================================
--- stable/9/usr.bin/grep/queue.c       Mon Jul 21 22:59:40 2014        
(r268966)
+++ stable/9/usr.bin/grep/queue.c       Mon Jul 21 23:00:26 2014        
(r268967)
@@ -1,4 +1,4 @@
-/*     $NetBSD: queue.c,v 1.2 2011/02/16 01:31:33 joerg Exp $  */
+/*     $NetBSD: queue.c,v 1.5 2011/08/31 16:24:57 plunky Exp $ */
 /*     $FreeBSD$       */
 
 /*-
@@ -68,8 +68,11 @@ enqueue(struct str *x)
 
        STAILQ_INSERT_TAIL(&queue, item, list);
 
-       if (++count > Bflag)
-               free(dequeue());
+       if (++count > Bflag) {
+               item = dequeue();
+               free(item->data.dat);
+               free(item);
+       }
 }
 
 static struct qentry *
@@ -92,7 +95,8 @@ printqueue(void)
        struct qentry *item;
 
        while ((item = dequeue()) != NULL) {
-               printline(&item->data, '-', (regmatch_t *)NULL, 0);
+               printline(&item->data, '-', NULL, 0);
+               free(item->data.dat);
                free(item);
        }
 }
@@ -102,6 +106,8 @@ clearqueue(void)
 {
        struct qentry *item;
 
-       while ((item = dequeue()) != NULL)
+       while ((item = dequeue()) != NULL) {
+               free(item->data.dat);
                free(item);
+       }
 }

Modified: stable/9/usr.bin/grep/util.c
==============================================================================
--- stable/9/usr.bin/grep/util.c        Mon Jul 21 22:59:40 2014        
(r268966)
+++ stable/9/usr.bin/grep/util.c        Mon Jul 21 23:00:26 2014        
(r268967)
@@ -302,7 +302,7 @@ procline(struct str *l, int nottext)
                                        r = REG_NOMATCH;
                        /* Check for whole word match */
                        if (r == 0 && (wflag || fg_pattern[i].word)) {
-                               wint_t wbegin, wend;
+                               wchar_t wbegin, wend;
 
                                wbegin = wend = L' ';
                                if (pmatch.rm_so != 0 &&
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to