|
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/
[Prev in Thread] | Current Thread | [Next in Thread] |