bug-grep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [bug-grep] search.c clean-up


From: Elliott Hughes
Subject: Re: [bug-grep] search.c clean-up
Date: Wed, 24 Nov 2004 09:28:23 -0800

On Nov 24, 2004, at 03:29, Jim Meyering wrote:

Elliott Hughes <address@hidden> wrote:
...
The problem with the 4-parameter approach

  static void
  wrap_pattern (char *pattern, size_t *pattern_len,
                char const *prefix, char const *suffix)
  {
   ...
  }

is that it works fine when we don't have to free the PATTERN,
but if anyone ever calls it with a malloc'd PATTERN, it will leak.
return char*, and -- at the risk of more nitpickery -- expect the user
to call strlen if they need to know how long the pattern is?
I disagree.
A factorization change should avoid changing semantics.
If you want to declare that patterns do not contain NUL bytes
and adjust all of the corresponding interfaces, then belongs
in a separate change.
i did think about that when i pasted in the comment from Pcompile, but 
didn't think it was significant because grep's already pretty uneven in 
that area. even if bash(1) used a real string type to allow '\0' in 
arguments, the char* argv[] mechanism doesn't let you transfer them, 
the length passed to the compile function by grep's main comes from 
strlen(3) if it's a bare argument, probably correctly handles patterns 
containing '\0' if they came from a file, but uses strcpy(3) if they 
came from '-e'.
--
http://www.jessies.org/~enh/





reply via email to

[Prev in Thread] Current Thread [Next in Thread]