[Top][All Lists]

[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'.


reply via email to

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