just use the stack to kill memleak and return if user didnt give us anything to match

This commit is contained in:
Mike Frysinger 2006-04-16 21:41:00 +00:00
parent bf2d9905ca
commit 20c22e0883

View File

@ -659,7 +659,7 @@ static void regex_process(void)
char current_line[256]; char current_line[256];
int i; int i;
int j = 0; int j = 0;
regex_t *pattern; regex_t pattern;
/* Reset variables */ /* Reset variables */
match_lines[0] = -1; match_lines[0] = -1;
@ -667,9 +667,6 @@ static void regex_process(void)
num_matches = 0; num_matches = 0;
match_found = 0; match_found = 0;
pattern = (regex_t *) malloc(sizeof(regex_t));
memset(pattern, 0, sizeof(regex_t));
/* Get the uncompiled regular expression from the user */ /* Get the uncompiled regular expression from the user */
clear_line(); clear_line();
putchar((match_backwards) ? '?' : '/'); putchar((match_backwards) ? '?' : '/');
@ -681,14 +678,15 @@ static void regex_process(void)
uncomp_regex[i-1] = '\0'; uncomp_regex[i-1] = '\0';
else else
while((i = getchar()) != '\n' && i != EOF); while((i = getchar()) != '\n' && i != EOF);
} } else
return;
/* Compile the regex and check for errors */ /* Compile the regex and check for errors */
xregcomp(pattern, uncomp_regex, 0); xregcomp(&pattern, uncomp_regex, 0);
/* Run the regex on each line of the current file here */ /* Run the regex on each line of the current file here */
for (i = 0; i <= num_flines; i++) { for (i = 0; i <= num_flines; i++) {
strcpy(current_line, process_regex_on_line(flines[i], pattern)); strcpy(current_line, process_regex_on_line(flines[i], &pattern));
flines[i] = bb_xstrdup(current_line); flines[i] = bb_xstrdup(current_line);
if (match_found) { if (match_found) {
match_lines[j] = i; match_lines[j] = i;